⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.java

📁 华为CNGP.CMPP.SGIP.CMPP源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					toStr = obj.toString();
					if (toStr.indexOf('@') > 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((com.huawei.insa2.util.Debug.class)
							.getName()) != -1 || esc != null
					&& str.indexOf(esc) != -1)
				continue;
			if (esc == "!@*#~^?'/\"")
				return str;
			int i = str.indexOf('(');
			int j = str.indexOf(')');
			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;
	}

	private static String indentString = "    ";

	private static final String lineSeparator = System
			.getProperty("line.separator");

	public static PrintWriter out;

	private static final byte hexNumber[] = { 48, 49, 50, 51, 52, 53, 54, 55,
			56, 57, 97, 98, 99, 100, 101, 102 };

	private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");

	public static final String fullInfo = "!@*#~^?'/\"";

	static {
		out = new PrintWriter(System.out);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -