繁体   English   中英

Eclipse调试获得完整堆栈

[英]Eclipse debugging getting full stack

我只是有一个简单的问题,请考虑以下方法

public void do_something(long arg){
//some work
}

在eclipse中,我为上面的方法添加了一个断点并运行程序,一切都很好,但我找不到当前堆栈的堆栈?! 例如

call do_something
push id
call previous_method
call xyz
pop z
call useZ
push z

我的意思是这个方法是由10种不同的方法和不同的堆栈调用的,我怎样才能找到eclipse的完整堆栈(包括方法)? 我应该更改一些默认属性还是什么?!

为了放置图像,我重复我的评论作为答案。

在Debug视图中,您可以找到调用堆栈,在Variables View中可以找到局部变量的实际参数和值:

调用Stack for单线程应用程序

要获取调用堆栈中其他方法的局部变量的实际参数和值,只需在当前方法上方的方法上单击Debug视图。

这不适用于多线程应用程序。 您只能看到当前运行该方法的线程的调用堆栈。 看着: 调用堆栈用于多线程应用程序

在方法foo通过创建计时器来创建线程。 如果jvm挂起bar ,它只能看到TimerTask.run的调用堆栈 - > bar而不是main - > foo - > run - > bar

你所描述的不是堆栈。

这是一段历史。

Eclipse不是为了给你一个历史而设计的。 但是,还有其他工具可以显示历史记录,例如Chronon。 但是,这对你来说可能太贵了! 如果您的应用程序非常复杂,它也可能会使用太多内存。

然而,获取历史记录的最简单方法是将System.out.println("some message")放在很多地方。

在任何地方使用System.out.println都不方便,因此已经开发了其他一些想法来改进:

  1. 日志框架处理常见任务,例如打印发生事件的时间,旋转大日志文件等。
  2. 面向方面的编程允许您一次在许多地方注入日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM