📄 debug.java
字号:
return;
}
if(getDepth(prefix) > depth)
{
String str = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(formatClassName(obj.getClass(), obj))))).append(" @").append(System.identityHashCode(obj))));
if(prefix.trim().endsWith(str.trim()))
str = "";
String toStr;
try
{
toStr = obj.toString();
if(toStr.indexOf(64) > 0)
toStr = " {Stack overflow!}";
}
catch(StackOverflowError t)
{
toStr = " {Stack overflow!}";
}
dump(prefix, String.valueOf(str) + String.valueOf(toStr));
return;
}
if(obj instanceof Vector)
{
dump(prefix, depth, checkCircuit, (Vector)obj);
return;
}
if(obj instanceof Map)
{
dump(prefix, depth, checkCircuit, (Map)obj);
return;
}
if(obj instanceof Enumeration)
{
dump(prefix, depth, checkCircuit, (Enumeration)obj);
return;
}
if(obj instanceof Object[])
{
dump(prefix, depth, checkCircuit, (Object[])obj);
return;
}
if(obj instanceof Throwable)
{
dump(prefix, (Throwable)obj);
return;
}
if(obj instanceof byte[])
{
dump(prefix, (byte[])obj);
return;
}
if(obj.getClass().isArray())
{
int len = Array.getLength(obj);
dumpBegin(prefix, checkCircuit, obj);
StringBuffer content = new StringBuffer();
for(int i = 0; i < len; i++)
{
content.append(fixLength(Array.get(obj, i).toString(), 4));
if(i % 8 == 7 && i < len - 1)
content.append(String.valueOf(lineSeparator) + String.valueOf(indent(prefix)));
}
dump(indent(prefix), content.toString());
dumpEnd(prefix, checkCircuit, obj);
return;
}
if(Class.forName("javax.servlet.ServletRequest").isInstance(obj))
{
dumpServletRequest(prefix, obj);
return;
}
}
catch(ClassNotFoundException classnotfoundexception) { }
dumpBegin(prefix, checkCircuit, obj);
for(Class c = obj.getClass(); c != null; c = c.getSuperclass())
{
Field f[];
try
{
f = c.getDeclaredFields();
}
catch(SecurityException ex2)
{
dump(indent(prefix), "Can't dump object member for security reason.");
return;
}
for(int i = 0; i < f.length; i++)
{
String m = Modifier.toString(f[i].getModifiers());
if(m.indexOf("static") > 0)
continue;
String n = f[i].getName();
Object v = "[unkonwn]";
try
{
f[i].setAccessible(true);
}
catch(SecurityException securityexception) { }
try
{
v = f[i].get(obj);
if(v != null)
if(v instanceof String)
v = String.valueOf(String.valueOf((new StringBuffer("\"")).append(v).append('"')));
else
if(v instanceof Character)
{
char cv = ((Character)v).charValue();
if(cv < ' ')
{
StringBuffer sbv = new StringBuffer();
sbv.append("\\u");
sbv.append(Integer.toHexString(cv));
for(; sbv.length() < 6; sbv.insert(2, '0'));
v = sbv;
}
v = String.valueOf(String.valueOf((new StringBuffer("'")).append(v).append('\'')));
}
}
catch(Exception exception) { }
Class ct = f[i].getType();
String t = formatClassName(ct, v);
dump(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(indent(prefix))))).append(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(m)))).append(' ').append(t).append(' ').append(n))).trim()).append(" = "))), depth, checkCircuit, v);
}
}
dumpEnd(prefix, checkCircuit, obj);
}
private static void dumpBegin(String prefix, Vector checkCircuit, Object obj)
{
String className = formatClassName(obj.getClass(), obj);
int address = System.identityHashCode(obj);
checkCircuit.addElement(new Integer(address));
if(obj instanceof Array)
className = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(className.substring(2))))).append('[').append(Array.getLength(obj)).append("] ")));
if(className.startsWith("java.lang."))
className = className.substring(10);
if(prefix.trim().endsWith("@".concat(String.valueOf(String.valueOf(address)))))
out.println(String.valueOf(String.valueOf(prefix)).concat(" {"));
else
out.println(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(prefix)))).append(className).append(" @").append(address).append(" {"))));
}
private static void dumpEnd(String prefix, Vector checkCircuit, Object obj)
{
checkCircuit.removeElement(new Integer(System.identityHashCode(obj)));
int p = prefix.lastIndexOf(indentString);
if(p > 0)
prefix = String.valueOf(prefix.substring(0, p)) + String.valueOf(indentString);
int i = 0;
do
{
if(i >= prefix.length())
break;
char c = prefix.charAt(i);
if(c != '\t' && c != ' ')
break;
out.print(c);
i++;
} while(true);
out.println("}");
out.flush();
}
public static String locate(String esc)
{
StringWriter sw = new StringWriter();
(new Exception()).printStackTrace(new PrintWriter(sw));
StringTokenizer st = new StringTokenizer(sw.toString(), "\n");
do
{
if(!st.hasMoreTokens())
break;
String str = st.nextToken();
if(str.indexOf("Exception") != -1 || str.indexOf((class$com$huawei$insa2$util$Debug != null ? class$com$huawei$insa2$util$Debug : (class$com$huawei$insa2$util$Debug = class$("com.huawei.insa2.util.Debug"))).getName()) != -1 || esc != null && str.indexOf(esc) != -1)
continue;
if(esc == "!@*#~^?'/\"")
return str;
int i = str.indexOf(40);
int j = str.indexOf(41);
if(i != -1 && j != -1)
return str.substring(i, j + 1);
break;
} while(true);
return "";
}
private static void setHex(byte src[], int lowByte, int value)
{
int i = 0;
do
{
if(i >= 8)
break;
src[lowByte - i] = hexNumber[value & 0xf];
value >>>= 4;
if(value == 0)
break;
i++;
} while(true);
}
private static String indent(String prefix)
{
int p = prefix.lastIndexOf(indentString);
if(p > 0)
prefix = String.valueOf(prefix.substring(0, p)) + String.valueOf(indentString);
StringBuffer sb = new StringBuffer();
int i = 0;
do
{
if(i >= prefix.length())
break;
char c = prefix.charAt(i);
if(c != '\t' && c != ' ')
break;
sb.append(c);
i++;
} while(true);
sb.append(indentString);
return sb.toString();
}
private static String formatClassName(Class c, Object obj)
{
String t = c.getName();
if(t.charAt(t.length() - 1) == ';')
t = t.substring(0, t.length() - 1);
boolean isArray = false;
boolean firstDimension = true;
while(t.startsWith("["))
{
isArray = true;
if(firstDimension && obj != null)
{
t = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(t.substring(1))))).append('[').append(Array.getLength(obj)).append(']')));
firstDimension = false;
} else
{
t = String.valueOf(String.valueOf(t.substring(1))).concat("[]");
}
}
if(isArray)
{
char ch = t.charAt(0);
t = t.substring(1);
switch(ch)
{
case 66: // 'B'
t = "byte".concat(String.valueOf(String.valueOf(t)));
break;
case 67: // 'C'
t = "char".concat(String.valueOf(String.valueOf(t)));
break;
case 70: // 'F'
t = "float".concat(String.valueOf(String.valueOf(t)));
break;
case 73: // 'I'
t = "int".concat(String.valueOf(String.valueOf(t)));
break;
case 74: // 'J'
t = "long".concat(String.valueOf(String.valueOf(t)));
break;
case 83: // 'S'
t = "short".concat(String.valueOf(String.valueOf(t)));
break;
case 90: // 'Z'
t = "boolean".concat(String.valueOf(String.valueOf(t)));
break;
}
}
if(t.startsWith("java.lang."))
t = t.substring(10);
else
if(t.startsWith("class "))
t = t.substring(7);
return t;
}
private static String fixLength(String str, int len)
{
StringBuffer sb = new StringBuffer(len);
sb.append(str);
int n = len - str.length() % len;
for(int i = 0; i < n; i++)
sb.append(' ');
return sb.toString();
}
private static String dumpHead()
{
StringBuffer sb = new StringBuffer();
sb.append(sdf.format(new Date()));
sb.append(locate(null));
sb.append(' ');
return sb.toString();
}
private static int getDepth(String prefix)
{
int count = 0;
int indentLen = indentString.length();
int i = -indentLen;
do
{
count++;
i = prefix.indexOf(indentString, i + indentLen);
} while(i >= 0);
return count;
}
static Class class$(String x$0)
{
try
{
return Class.forName(x$0);
}
catch(ClassNotFoundException x$0)
{
throw new NoClassDefFoundError(x$0.getMessage());
}
}
static
{
out = new PrintWriter(System.out);
fullInfo = "!@*#~^?'/\"";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -