Java:如何记录调用函数的位置

时间:2017-03-01 14:39:38

标签: java

有没有比肆意抛出异常并捕获堆栈跟踪更好的方法来找出调用我的函数的原因(或至少从哪里开始)?

我可以记录调用者正在使用的参数,但我无法获取调用者位置本身。它是一些第三方软件,因此查找所有引用并添加日志信息不是一种选择。我也犹豫是否将调试器附加到正在运行的jvm。

2 个答案:

答案 0 :(得分:8)

您可以拨打Thread.currentThread().getStackTrace()

这将为您提供一个StackTrace数组,就像您抛出异常一样。

希望这会有所帮助。 :)

答案 1 :(得分:5)

完全可以创建一个异常,而不是抛出它,并检查它的堆栈跟踪:

Exception e = new Exception();
e.printStackTrace(System.out);

请注意,经常这样做可能会对JVM的性能产生不利影响。

StackTraceElement[] stacktrace = e.getStackTrace();

stacktrace数组的第0个元素将包含实例化异常的方法。