XCode偵錯程式LLDB

2022-03-26 06:50:02 字數 1602 閱讀 3863

nslog(@"%@", whatisinsidethisthing);
nsnumber *n = @7; // 實際應該呼叫這個函式:foo();
if (1 || thebooleanatstake)
int calculatethetrickyvalue

help

print

expression

什麼是 print 命令

'print' is an abbreviation for 'expression --'.

(print是 `expression --` 的縮寫)

p objects
(nsstring *) $7 = 0x0000000104da4040 @"red balloons"
(lldb) p @[ @"foo", @"bar" ]

(nsarray *) $8 = 0x00007fdb9b71b3e0 @"2 objects"

(lldb) e -o -- $8

<__nsarrayi 0x7fdb9b71b3e0>(

foo,

bar)

(lldb) po $8

<__nsarrayi 0x7fdb9b71b3e0>(

foo,

bar)(lldb) po @"lunar"

lunar

(lldb) p @"lunar"

(nsstring *) $13 = 0x00007fdb9d0003b0 @"lunar"

(lldb) e int $a = 2

(lldb) p $a * 19

38(lldb) e nsarray *$array = @[ @"saturday", @"sunday", @"monday" ]

(lldb) p [$array count]

2(lldb) po [[$array objectatindex:0] uppercasestring]

saturday

(lldb) p [[$array objectatindex:$a] characteratindex:0]

error: no known method '-characteratindex:'; cast the message send to the method's return type

error: 1 errors parsing expression

// 悲劇了,lldb 無法確定涉及的型別 (譯者注:返回的型別)。這種事情常常發生,給個說明就好了:

(lldb) p (char)[[$array objectatindex:$a] characteratindex:0]

'm'(lldb) p/d (char)[[$array objectatindex:$a] characteratindex:0]

77

指令碼編寫 編寫 LLDB 偵錯程式指令碼

lldb 偵錯程式提供對 python 指令碼的支援,可以執行一些自動化的操作,提供工作效率。本文從 helloworld 開始學習如何編寫 lldb 指令碼。編寫第乙個 lldb 指令碼 下面我們來實際操作編寫 lldb 偵錯程式指令碼。在計算機上建立乙個目錄用於存指令碼檔案,比如我們在 user...

實用LLDB命令 Xcode除錯

命令名 用法 說明 expr expr 表示式 可以在除錯時動態執行指定表示式,並將結果列印出來,很有用的命令。popo 表示式 與expr類似,列印物件,會呼叫物件description方法。是print object的簡寫 print print type 表示式 也是列印命令,需要指定型別。b...

基於lldb 用c API實現自己的偵錯程式

lldb是下一代高效能偵錯程式。它被構建為一組可重用的元件,這些元件高度利用了大型llvm專案中的現有庫,如clang表示式解析器和llvm反彙編器。lldb是macos上xcode的預設偵錯程式,支援在桌面和ios裝置和模擬器上除錯c,objective c和c sbdebugger偵錯程式類,用...