是的,正确的方法是通过Python脚本界面进行。为了避免gdb在调试器的命令语言中填充足够的流控制和执行逻辑来实现这种可能(或者说 - 使其成为可能......很差),而不是那种方法,在你需要的地方有一个低的障碍使用Python来完成任务 - 但是通过Python中一些非常易于使用的界面,调试器的全部功能都可用。lldb将脚本语言留给Python,并专注于提供一个干净而强大的API,它很容易使用Python。
但是为了解决你的目标,为什么不把stop-disassembly-count
设置做你所需要的?实际上,它应该已经在做你想做的事情,除非你已经通过更改默认设置stop-disassembly-display
禁用了~/.lldbinit
文件中的反汇编显示。
(lldb) settings show stop-disassembly-count
stop-disassembly-count (int) = 4
(lldb) settings show stop-disassembly-display
stop-disassembly-display (enum) = no-source
(lldb)
LLDB的默认行为是显示一些那种情况下,当你通过一个程序步。如果源代码可用,它将显示您正在逐步完成的源代码。如果没有源代码,它将显示即将执行的汇编指令。还有,当你有调试信息的小错误(所以调试器知道文件和行号),但源代码是不可用(或在不同的路径) - 现在LLDB会告诉你拆卸但这不是正确的行为这个案例。用户仍然在源级别操作(使用s
和n
步骤,而不是si
和ni
的指令级步进)和LLDB应该表现在这种情况下没有上下文,只显示源文件名和行号。
好这个问题是与机器上的lldbinit文件调试。真的很喜欢LLDB。谢谢您的帮助。 – MachPortMassenger