gpt4 book ai didi

java - JDB 面临问题 - 未命中断点

转载 作者:行者123 更新时间:2023-12-01 17:35:36 25 4
gpt4 key购买 nike

我有以下代码:

void func()
{
try
{
f1()
}
finally()
{
if (resource != null)
resource.close();
}
}

我放置了三个断点:调用 f1()、f1() 内部、finally block 中的 if 语句。

看起来finally block 中的断点没有被命中。如果在 f1() 内击中断点后我使用下一个命令,我确实最终会经历finally block 。

此外,如果我在 finally block 的两行上都放置断点,则第一行确实会命中断点。

不确定这是否是由于 JDB 中的错误造成的。有人可以告诉我这是一个已知问题还是我遗漏了什么?

我在 Linux 上使用 JDK 6。

最佳答案

我不太明白您所看到的意外行为,但 JDB 可以毫无问题地调试 if's、finally's 或 if's 位于 finally's 内部。如果您看到明显的断点被跳过,那么很可能您正在查看与正在运行的字节码不同的源代码。可以通过反汇编字节码来检查字节码中的行号

javap -c -l <simple class name>

与类文件位于同一目录中。它也可以运行为

javap -c -l -classpath <build dir> <fully qualified class name>

它将显示每个方法包含的所有指令以及数字标签。将有一个“LineNumberTable”将这些标签与源代码行号相关联。注意:每个源代码行通常有许多字节码指令。

关于java - JDB 面临问题 - 未命中断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6699127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com