// some formatting properties
int i = frameNumber;
Location loc = ctx.getLocation();
SourceFile file = loc.getFile();
int line = loc.getLine();
String name = (file == null) ? "<null>" : file.getName(); //$NON-NLS-1$
String sig = ctx.getCallSignature();
String func = extractFunctionName(sig);
// file == null or line < 0 appears to be a terminator for stack info
if (file == null && line < 0)
{
validFrame = false;
}
else
{
Variable[] var = ctx.getArguments(m_session);
Variable dis = ctx.getThis(m_session);
boolean displayArgs = (func != null) || (var != null);
sb.append('#');
FieldFormat.formatLong(sb, i, 3);
sb.append(' ');
if (showThis && dis != null)
{
ExpressionCache.appendVariable(sb, dis);
sb.append("."); //$NON-NLS-1$
}
if (func != null)
sb.append(func);
if (displayArgs)
{
sb.append('(');
for (int j=0; j<var.length; j++)
{
Variable v = var[j];
sb.append(v.getName());
sb.append('=');
ExpressionCache.appendVariableValue(sb, v.getValue());
if ((j+1)<var.length)
sb.append(", "); //$NON-NLS-1$
}
sb.append(")"); //$NON-NLS-1$
sb.append(getLocalizationManager().getLocalizedTextString("atFilename")); //$NON-NLS-1$
}
sb.append(name);
// if this file is currently being filtered put the source file id after it
if (file != null && (showFileId || !m_fileInfo.inFileList(file)))
{
sb.append('#');
sb.append( file.getId() );
}
sb.append(':');
sb.append(line);
}