是否可以使用 lldb 将标签用作 nasm 文件中的断点?

时间:2021-01-08 10:02:39

标签: nasm lldb

我正在努力应对使用 os x 64 位以 nasm 编写的代码的不断更改。我发现每次都必须重新定义断点所在的行(因为更改代码,行更改)很无聊。所以我想使用一个引用标签的断点(顺便说一下,我可以使用 gdb)。但是,我注意到在使用 nasm 代码进行调试时,lldb 不允许在断点中使用标签。你们有人用吗?如果是这样,如何?

1 个答案:

答案 0 :(得分:1)

如果标签作为真正的符号存在,lldb 应该能够在符号上设置断点。但是如果标签不存在(它是一个本地符号或其他什么),lldb 将不得不从调试信息中把它挖出来。我不知道 nasm 如何在调试信息中表示标签,但是如果 gdb 可以找到它们,那么 lldb 也应该能够使用一些面包屑。如果您在示例中提交了一个错误,该错误显示了 {{3}} 中的问题,有人可以查看。

您可以使用“源正则表达式”断点(在 lldb break set -p 中)对当前 lldb 执行此任务。由于标签排在第一位,像 ^ *LABELNAME: 这样的正则表达式应该只获取标签的定义,而不是源中对它的任何其他引用。

更一般地说,当我有代码时,我知道我要设置一个断点,但我仍在忙着编辑代码,所以行号一直在变化,我只是添加如下注释:

someInterestingFunctionCall() // Set a breakpoint here

然后我做:

(lldb) break set -p "在此处设置断点" -f MySourceFile.c

这样我就可以编辑源代码并根据需要移动该行,并且断点将继续工作。 nasm 支持注释,因此您也可以使用注释来标记要中断的行。

相关问题