调试相关的工具
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.utils
level
- 要更改的级别,包括:ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN