sns*_*sns 14 java debugging callstack
我正在研究非常庞大的基于Java web的应用程序.由于在开发过程中没有进行适当的日志记录,因此我很难设置断点并调试应用程序,因为我不知道执行顺序.在执行某些操作后,是否有任何机制可以获取正在运行的java应用程序的完整Call Stack.
我在网上搜索了很长时间,但无法找到具体的解决方案.如果有什么东西请建议我.谢谢
Mik*_*rov 19
方法1:从命令行使用jstack实用程序(JDK发行版的一部分).
方法2:将信号3发送到java进程,它将在stdout上转储堆栈跟踪.
方法3:从应用程序中调用Thread.getAllStackTraces():
public class StackTraceDumper
{
public static dumpAllStackTraces ()
{
for (Map.Entry <Thread, StackTraceElement []> entry:
Thread.getAllStackTraces().entrySet ())
{
System.out.println (entry.getKey ().getName () + ":");
for (StackTraceElement element: entry.getValue ())
System.out.println ("\t" + element);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用StackTraceDumper.dumpAllStackTraces()您需要转储堆栈跟踪的位置.
Thread.dumpStack()
将当前线程的堆栈跟踪打印到标准错误流.
Thread.getAllStackTraces()
返回所有活动线程的堆栈跟踪映射.
Thread.getStackTrace()
返回表示此线程的堆栈转储的堆栈跟踪元素数组.
| 归档时间: |
|
| 查看次数: |
20148 次 |
| 最近记录: |