调试相关的工具
| Type | Name and description |
|---|---|
static java.net.URL |
getClassLocation(Class clazz)获得类的class文件路径 |
static Object |
getField(Object obj, String name, Class clazz)使用反射机制,获得 private 或 protected 的成员变量的值. |
static Object |
getInaccessibleField(Object obj, String name, Class clazz) |
static Object |
invokeInaccessibleMethod(Object obj, String name, List<Class> paramTypes, List<Object> args) |
static Object |
invokeMethod(Object obj, String name, List<Class> paramTypes, List<Object> args)使用反射机制,调用 private 或 protected 的方法. |
static Integer |
killDbConnections(Long timeout = null, Boolean printStatementCache = false )杀掉链接时间太长的数据库链接(后果未知) |
static void |
pm(Object msg)开始性能调试后,打印每个运行阶段和总的耗时(毫秒) |
static void |
printCaches()打印所有缓存的数量、占用内存大小等信息 |
static void |
printClassLoaderURLs()打印 classloader 中的 urls(classpath、jar包等) |
static void |
printProperties(Object obj)打印对象的所有属性,主要是便于在java类中调用 |
static void |
printRequestAttributes(javax.servlet.http.HttpServletRequest request)打印所有请求属性 |
static void |
printRequestCookies(javax.servlet.http.HttpServletRequest request)打印所有 cookie 信息 |
static void |
printRequestHeaders(javax.servlet.http.HttpServletRequest request)打印所有请求头 |
static void |
printRequestParameters(javax.servlet.http.HttpServletRequest request)打印所有请求参数 |
static void |
printSessionAttributes(javax.servlet.http.HttpSession session)打印所有 session 属性 |
static void |
printStackTrace()打印堆栈轨迹到控制台,同时记录到临时文件夹的 bro-stacktrace.log 文件中 |
static void |
printStacktrace() |
static void |
ps(Object msg, org.apache.commons.logging.Log log = null )开始性能调试,并打印第一个时间戳 |
static void |
setField(Object obj, String name, Class clazz, Object value)使用反射机制,设置 private 或 protected 的成员变量的值 |
static void |
setInaccessibleField(Object obj, String name, Class clazz, Object value) |
static String |
setLogLevel(Object clazz, String level)修改日志级别 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long), Object#wait(long, int), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
获得类的class文件路径
clazz - 要获取文件路径的class使用反射机制,获得 private 或 protected 的成员变量的值.
示例:DebugUtils.getField( Foobar.class, "bar", int.class )
obj - 对象或类,如果是类,则取静态的成员变量name - 成员变量的名称clazz - 成员变量的类型使用反射机制,调用 private 或 protected 的方法.
示例:
// 调用没有参数的方法 foo
DebugUtils.invokeMethod( foobar, "foo", null, null )
// 使用java调用有一个int类型参数的静态方法 bar
DebugUtils.invokeMethod( Foobar.class, "bar", (List) Arrays.asList(Integer.class), (List) Arrays.asList(200))
obj - 如果是class,则执行静态方法name - 方法名paramTypes - 方法参数类型的列表args - 调用方法的参数列表杀掉链接时间太长的数据库链接(后果未知)
timeout - 超时时间(单位毫秒,默认为2小时)printStatementCache - 是否打印sql cache(也许能看出点蛛丝马迹)开始性能调试后,打印每个运行阶段和总的耗时(毫秒)
打印所有缓存的数量、占用内存大小等信息
打印 classloader 中的 urls(classpath、jar包等)
打印对象的所有属性,主要是便于在java类中调用
打印所有请求属性
打印所有 cookie 信息
打印所有请求头
打印所有请求参数
打印所有 session 属性
打印堆栈轨迹到控制台,同时记录到临时文件夹的 bro-stacktrace.log 文件中
开始性能调试,并打印第一个时间戳
示例:
DebugUtils.ps("start") // 开始调试
...
DebugUtils.pm("foobar") // 打印start开始到当前时间点的耗时
...
DebugUtils.pm("end") // 打印start开始到当前时间点的耗时,以及foobar到当前时间点的耗时
msg - 需要显示的信息log - 用 log.debug 来代替 System.out.println 打印时间戳使用反射机制,设置 private 或 protected 的成员变量的值
obj - 对象或类,如果是类,则设置静态的成员变量name - 成员变量的名称clazz - 成员变量的类型修改日志级别
clazz - 类名、包名,或者类本身,如:bropen.toolkit.utilslevel - 要更改的级别,包括:ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN