lldbコマンドの使い方

もう完全に忘れていたので、メモ!

gccコンパイルするときに-gオプションをつける。

gcc -g ./test.c

こんな感じで起動

lldb ./a.out

listでソースコードをみれる。breakpointを設定したい行番号を確認。

(lldb) list
   7    int main(void){
   8        int a,b,i=0,j=0;
   9        int checkresult;
   10       char tmp[5];
...

ちなみにenterをおしたら前と同じコマンドの繰り返し。

breakpointを設定。breakpointの"b"と"ソースコードのファイル名":"行番号"

(lldb) b test.c:25

breakpointを設定後、rで実行。

(lldb) r
Process 2604 launched: './a.out' (x86_64)

sで1行ずつ実行。nでも進む。nだと関数とかは飛ばしてくれる。

(lldb) s
   23           M[j][strlen(M[j]) - 1] = '\0';
   24       }
   25       for(i=0;i<a;i++){
-> 26            for(j=0;j<a;j++){

"print 変数名"で実行しているタイミングの変数の値が確認できる

(lldb) print i
(int) $6 = 0
(lldb) print N[0]
(char [201]) $8 = "0000"

なんかちょっとポインタの勉強になっておもしろい。

(lldb) print N
(char (*)[201]) $10 = 0x00007fff5fbf5c78
(lldb) print *N
(char [201]) $11 = "0000"
(lldb) print *N[0]
(char) $12 = '0'

quitでおしまい。

(lldb) quit
Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n] Y