Avatar ·

如何在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()`