你可以在程序中打印代码中的哪一行以及正在运行的线程的方法 - 不使用像visualvm这样的监控软件?你需要扩展线程吗?
答案 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)
您可以查看JDB。 This link显示了使用它来调试并发问题的示例。 This也只展示了它的一些基本功能。它相当不错,我相信它应该已经在你的JAVA_HOME / bin中了。
另一种选择是查看JUCProfiler,我没有试过这个,但看起来相当不错。