跟踪和调试操作

1. 调试(Debug)

规则引擎提供了一个简单的内置 debug 方法,用于在规则执行期间有条件地显示消息。帮助器类定义的 API 如下:

public boolean debug(String message)

通过在 JVM 命令行上设置以下系统属性,可控制调试消息的生成:

-Dorg.jboss.byteman.debug=true

2. 跟踪(Trace)

规则引擎提供了一组内置方法,用于在执行期间记录跟踪消息。消息可以输出到 System.outSystem.err 或指定文件。帮助器类定义的 API 如下:

public boolean traceOpen(Object identifier, String filename)
public boolean traceOpen(Object identifier)
public boolean traceClose(Object identifier)
public boolean trace(Object identifier, String message)
public boolean traceln(Object identifier, String message)
public boolean trace(String message)
public boolean traceln(String message)

特殊情况

堆栈管理操作

1. 检查调用树

规则引擎提供了一组内置方法,用于检查规则触发时的调用栈。帮助器类定义的 API 如下:

public boolean callerEquals(String name)
public boolean callerEquals(String name, int frameCount)
public boolean callerEquals(String name, int startFrame, int frameCount)
public boolean callerEquals(String name, boolean includeClass)
public boolean callerEquals(String name, boolean includeClass, int frameCount)
public boolean callerEquals(String name, boolean includeClass, int startFrame, int frameCount)
public boolean callerEquals(String name, boolean includeClass, boolean includePackage)
public boolean callerEquals(String name, boolean includeClass, boolean includePackage, int frameCount)
public boolean callerEquals(String name, boolean includeClass, boolean includePackage, int startFrame, int frameCount)

public boolean callerMatches(String regExp)
public boolean callerMatches(String regExp, int frameCount)
public boolean callerMatches(String regExp, int startFrame, int frameCount)
public boolean callerMatches(String regExp, boolean includeClass)
public boolean callerMatches(String regExp, boolean includeClass, int frameCount)
public boolean callerMatches(String regExp, boolean includeClass, int startFrame, int frameCount)
public boolean callerMatches(String regExp, boolean includeClass, boolean includePackage)
public boolean callerMatches(String regExp, boolean includeClass, boolean includePackage, int frameCount)
public boolean callerMatches(String regExp, boolean includeClass, int startFrame, int frameCount)

public boolean callerCheck(String match, boolean isRegExp, boolean includeClass, boolean includePackage, int startFrame, int frameCount)

2. 跟踪调用栈

规则引擎提供了一组方法,用于记录或格式化调用栈的字符串表示。API 定义如下:

public void traceStack()
public void traceStack(String prefix)
public void traceStack(String prefix, Object key)
public void traceStack(int maxFrames)
public void traceStack(String prefix, int maxFrames)
public void traceStack(String prefix, Object key, int maxFrames)

public String formatStack()
public String formatStack(String prefix)
public String formatStack(int maxFrames)
public String formatStack(String prefix, int maxFrames)

使用正则表达式可筛选部分栈帧,相关方法如下:

public void traceStackMatching(String regExp)
public void traceStackMatching(String regExp, String prefix)
public void traceStackMatching(String regExp, boolean includeClass, ...)
public String formatStackMatching(String regExp, boolean includeClass, ...)

3. 跟踪线程调用栈

支持记录特定线程或所有线程的调用栈:

public void traceThreadStack(String threadName, ...)
public void traceAllStacks(String prefix, ...)

默认帮助器生命周期方法

默认帮助器提供了四个生命周期方法,在 System.out 中生成调试消息。例如:

Default helper activated
Installed rule using default helper : my test rule
Uninstalled rule using default helper : my test rule
Default helper deactivated

通过这些方法,开发者可以有效管理和调试规则的执行过程,确保规则的正确性和高效性。

FunTester 原创精华

【连载】从 Java 开始性能测试


↙↙↙阅读原文可查看相关链接,并与作者交流