如何在Java中获取并打印当前调用栈(stack trace)?
大家好!我最近开始用Java编程,遇到了这样一个情况:在我的多线程应用程序中,有时会出现难以捕捉的奇怪bug。我想在代码的某个特定位置查看执行流的来源——即获取当前的调用栈(call stack),以了解导致该点的方法调用顺序。
我知道在异常发生时可以使用`e.printStackTrace()`,但如果没有异常,而我只是需要记录当前栈以进行调试呢?例如,我想在`processOrder()`方法中添加这样的诊断,以了解是谁调用了它:
```java
public class OrderService {
public void processOrder(int orderId) {
// 这里想获取栈并记录日志
System.out.println("Processing order " + orderId);
// ... 业务逻辑
}
}
```
我尝试过谷歌搜索,但找到了很多不同的方案:有人建议使用`Thread.currentThread().getStackTrace()`