monolog

lldbの使い方備忘録

メモリ管理周りで色々ハマってたのだけど、普通にデバッガを使えばよかった。
Mac OSX だと、gdb より lldb を使う方が環境的に整ってて楽っぽい。LLVMさまさまだ。

LLDBの使い方(チュートリアル日本語訳) | こん

とりあえずここを読めばいいと思います。

以下は、上を読みながら実際にどのようにして作業を行ったかという流れのメモ。

まず、コンパイル時に -g オプションをつけてコンパイルすること
(これによって変数名や関数名のようなデバッグ情報が埋め込まれる)

なんかでプロセスのpidを取得して、

 

で対象プロセスにアタッチ

 

とすると、mallocにまつわるエラーにブレークポイントがセットできる
(その他のブレークポイント等は元記事を参照)

これを叩いた時に、メインプロセスの実行が止まったら

で再開出来る。(c は continue の省略コマンド)
で、実行すると、ブレークポイントで自動的に lldb がスタックトレースを吐いて止めてくれる。

 

でスタックトレースが表示できる (bt = thread backtrace)

 

で、n番目のフレームに移動出来る (btで表示した #n にあたるもの)

 

とすると、そのフレームから見える変数が表示できる。

 

とかすると、 valiable の値が表示できる。
また、*, &, ->, [] みたいな演算子も使用可能

 

みたいにすると、 printf(“hoge”) の返り値を取得できる。
ただし、返り値のキャストが必須のよう
(普通にhogeと表示出来るらしいけれど、こちらの環境では上手くいかなかった)

Share Button

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA