在 Eclipse 中导航 Java 调用堆栈

Posted

技术标签:

【中文标题】在 Eclipse 中导航 Java 调用堆栈【英文标题】:Navigating Java call stack in Eclipse 【发布时间】:2011-03-16 10:38:10 【问题描述】:

在像GDB 这样的调试器中,当您在断点处停止时,您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据。

你如何在 Eclipse 中做到这一点?

【问题讨论】:

查看您最近的问题和常见问题解答:“当您决定哪个答案对您最有帮助时,请单击复选框轮廓将其标记为已接受的答案以答案的左边” 对我来说,调试视图出现在左侧。听起来可能很愚蠢,这就是我即使按照接受的答案中提到的步骤也看不到调用堆栈的原因。 (我一辈子都是 Visual Studio 用户。) 【参考方案1】:

您只需在“调试”视图中单击堆栈帧。

【讨论】:

【参考方案2】:

在“debug perspective”中,显示名为“debug”的视图。对于当前暂停的每个线程,此视图显示完整的调用堆栈。单击此堆栈的一个元素会切换编辑器视图以显示相应的类,“变量”视图将显示此堆栈元素的变量。

【讨论】:

如果我显示了无数个线程,所有线程都显示(Running),而我找不到当前停止的线程怎么办?我如何找到它? OK,点击Pause按钮,Resume后,堆栈跟踪神奇地出现了。很奇怪。【参考方案3】:

在可视化调试器中,您将看到整个堆栈跟踪。只需单击您要检查的级别即可。绝对比使用 gdb 命令更容易。 :-)

【讨论】:

【参考方案4】:

请注意,默认情况下,您的“Debug Perspective”可能会折叠为“breadcrumb”视图模式,这意味着您一次只能看到一行堆栈跟踪。

要完全展开它,并在树中查看堆栈跟踪:

点击调试视图右上角的向下箭头。 选择“布局|树”

【讨论】:

感谢您的提示。非常有帮助。尽管按照您的指示,我仍然无法找到当前断点的堆栈跟踪。很奇怪。 OK,点击Pause按钮,Resume后,堆栈跟踪神奇地出现了。很奇怪。【参考方案5】:

首先,在您的代码中设置一个或多个您知道会被命中的断点,然后通过以下方式之一调试您的应用程序:

确保当前选择了包含您的main 方法的文件 按 F11

右键单击 Package Explorer 中包含您的 main 方法的文件 选择调试为 > Java 应用程序

Eclipse 现在应该显示“调试透视图”(可以使用 Window > Perspective > Open Perspective > Debug 手动打开)

一旦您的一个断点被命中,您应该会在调试透视图中看到一个标题为“调试”的框架(要手动打开,请使用“窗口”>“显示视图”>“调试”)。它看起来像这样:

我变灰的区域显示了当前在断点处暂停的线程的堆栈跟踪的每个步骤。当前暂停的调用堆栈的实际部分以灰色突出显示(因此,如果您有多个线程,则可以通过查找突出显示的行来查看当前暂停的线程)。单击堆栈跟踪视图的任何一行将显示详细信息(例如堆栈中该点的“变量”)

【讨论】:

以上是关于在 Eclipse 中导航 Java 调用堆栈的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用键盘在 Visual Studio 中导航调用堆栈?

跟踪堆栈外部库 eclipse

Eclipse断点调试

从 Eclipse 在 AWS EC2 上部署 Java webapp

UICollectionView 调用 scrollViewDidScroll:从导航堆栈中弹出时

将 prop 从组件传递到堆栈导航器