是的,正確的方法是通過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