如何在代码java中查看线程的位置

时间:2012-08-04 01:41:55

标签: java debugging

你可以在程序中打印代码中的哪一行以及正在运行的线程的方法 - 不使用像visualvm这样的监控软件?你需要扩展线程吗?

5 个答案:

答案 0 :(得分:3)

如果这只是用于快速调试或错误报告,您可以执行

new Exception().printStackTrace()

如果你想成为一个比这更有趣的人,你可以使用Thread.currentThread().getStackTrace()获得一组StackTraceElement个对象;您可以通过检查当前行号来确定当前行号。

答案 1 :(得分:2)

只需使用Thread.dumpStack()打印出堆栈(类似于未捕获异常时)。没有必要创建新的例外。

答案 2 :(得分:2)

几乎使用任何日志记录框架,大多数支持线程组/名称,类,方法,文件名和行号功能

答案 3 :(得分:1)

您可以拨打Thread.getStackTrace()来执行此操作。它返回一个StackTraceElement数组,表示当前的StackTrace。记住顶级耦合元素将成为Thread中的方法将是有帮助的,因此您可能感兴趣的元素将会在数组中下降。

当然,您需要暂停当前正在运行的Thread ...

Thread.getCurrentThread().getStackTrace()

答案 4 :(得分:0)

您可以查看JDBThis link显示了使用它来调试并发问题的示例。 This也只展示了它的一些基本功能。它相当不错,我相信它应该已经在你的JAVA_HOME / bin中了。

另一种选择是查看JUCProfiler,我没有试过这个,但看起来相当不错。