相关疑难解决方法(0)

确定当前调用堆栈(用于诊断目的)

出于诊断目的,我有时需要存储导致给定状态转换的调用堆栈(例如授予锁定,提交事务等),以便稍后出现问题时我可以找出最初触发状态转换的人.

目前,我知道检索调用堆栈的唯一方法看起来像下面的代码片段,我认为非常难看:

StackTraceElement[] cause;
try {
  throw new Exception();
} catch (Exception e) {
  cause = e.getStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

有人知道更好的方法吗?

java stack-trace

45
推荐指数
2
解决办法
2万
查看次数

Java,如何跟踪调用的函数

我想跟踪Java中调用的函数的开始[和结束],如下面的代码:

    public void foo() {
  System.out.println("begin of foo()");
  ...
  System.out.println("e-n-d of foo()");
 }
Run Code Online (Sandbox Code Playgroud)

但是维护转储代码System.out.println是一件单调乏味且容易出错的事情,因为类中可能有数十个函数.

任何好主意都可以缓解这项工作吗?我不想在整个文件中使用转储语句.

执行两者或其中一个开始和结束跟踪是最好的.
但是,如果不可能的话,已经调用该函数的记录也很有帮助.我的意思是不关心确切的开始和结束,只是告诉该函数已被调用.

java trace

3
推荐指数
1
解决办法
4089
查看次数

标签 统计

java ×2

stack-trace ×1

trace ×1