5

我对JDB有点困惑。相当擅长使用 GDB,我知道用于控制执行的各种简单命令,即 start、run、cont、step、stepi、break 等,但有许多(在我看来)不寻常的差异.

如果我想启动一个应用程序(而不是运行它,所以我可以从头开始执行它),本能地,我输入jdb MyApp然后start. 我收到无法识别的命令错误。阅读 JDB 帮助并没有给我任何关于启动命令或其等效命令的指示。所以,我试试step——那也不管用;我被告知我需要使用run命令启动 Java VM!

显然,它必须是可能的,因为step帮助中有一个命令解释。所以,我想也许我可以输入run并很快按下ctrl+c以中断它,因为在 GDB 中,这会停止执行。相反,它只是退出了 JDB。

我试过用谷歌搜索这个,但无济于事。我希望我不是完全盲目的愚蠢!

Rant over:你到底是如何开始在 JDB 中运行一个 java 应用程序以便从一开始就可以单步执行它的?

4

4 回答 4

6

我刚刚开始JDB用作调试器。可以在这里找到很好的说明。要回答您的一些问题:

  1. 要启动jdb,请在命令提示符处键入jdb <name of main class>
  2. 要启动程序,请键入run
  3. 要设置断点,请键入:stop at <class>:<line no.>
  4. 要步进,请键入cont

正如我所说,我刚刚开始使用jdb。我敢肯定,有更好的方法来完成上述工作,如果我自己了解更多,我会在这里发布。

HTH。

于 2011-09-06T11:25:10.260 回答
3

问题是虚拟机还没有启动,这就是为什么你不能进入第一行。解决方案是使用“-launch”作为命令行参数来启动 JDB。从那里您可以键入“step”或“cont”从头开始调试。

最好的一点是它只需要一秒钟并且不需要安装 IDE :-)

于 2011-11-22T16:07:12.560 回答
0

我是作为一个从未使用过 Java 的用户来阅读这份材料的,但我是一个相当有成就的 gdb for c 用户。我有很多很多场合需要进入源代码的第一个可执行行 - 如此普遍,以至于我几乎总是使用以下顺序来启动 gdb。

在发出“run”命令之前,在“main”处设置断点。然后“运行”将加载程序,但会在执行第一步之前中断。

这可能完全不适用于 Java,但我想我会提出建议。

于 2019-04-04T12:36:28.767 回答
-4

我建议您使用 IDE 来运行调试器。在 IDE 中,您可以通过单击运行旁边的按钮开始调试,通过单击一行添加断点并以图形方式查看线程和变量的状态。(甚至改变它们)

于 2011-03-27T19:55:33.087 回答