2014-10-08 67 views
3

我想從一個腳本運行類似下面的命令運行命令後:我怎樣才能退出LLDB使用-o

​​

有什麼辦法退出執行後LLDB而不進入交互模式?傳遞-o退出或-o退出失敗,並顯示「正在中止after_file命令執行,命令:'quit'失敗。」使用或不使用退出/退出運行上述命令會使終端處於lldb提示符下,這會阻止我僅運行此命令並將輸出重定向到磁盤上的某處。

這樣做的最終目標是在發生某些事情時按需獲得命令的輸出。這個平臺上沒有Python解釋器,所以這不是一個選項。有什麼建議麼?

回答

1

是的,這只是一個錯誤。在啓動交互式解釋器之前,「-o」命令全部收集起來並提供給子解釋器執行。不幸的是,「退出」只是放棄了分譯員。這在TOT lldb中得到了解決,應該在太久之前將其發佈爲官方Apple版本。

3

這似乎爲我工作:

$ xcrun LLDB /斌/ LS -o 「B malloc的」 O 「運行」 -o 「的劇本導入操作系統; os._exit(1)」

(lldb)target創建「/ bin/ls」

將當前可執行文件設置爲'/ bin/ls'(x86_64)。

(lldb)b malloc

斷點1:3個位置。

(LLDB)運行

過程640推出: '/ bin中/ LS'(x86_64的)

(LLDB)腳本導入口; os._exit(1)

過程640停止 *線#1:TID = 0x11033,0x00007fff9374136b libsystem_malloc.dylib malloc, stop reason = breakpoint 1.2 frame #0: 0x00007fff9374136b libsystem_malloc.dylib的malloc libsystem_malloc.dylib`malloc: - > 0x7fff9374136b:pushq%RBP 0x7fff9374136c:MOVQ%RSP ,%RBP 0x7fff9374136f:pushq%RBX 0x7fff93741370:pushq%RAX

$(回提示)

這是一種嚴重的,但關鍵的城堡:

-o "script import os; os._exit(1)" 

sys.exit(1)將不起作用(我們捕獲它並阻止它退出LLDB),但os._exit()是一個開放的免費贈品。考慮這個錯誤。

+0

這對OP來說不起作用,因爲他說他的平臺上沒有Python。 – 2014-10-13 18:54:55

+0

哎呀..沒有意識到! – 2014-10-13 21:25:48