トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

GDB

GDB

[Linux]
最終更新時間:2013年11月25日 11時38分27秒

GDB

  PHPで使う

1.PHPをデバッグモードでコンパイル

 $ cd php-src
 $ ./buildconf
 $ ./configure --disable-all --enable-debug
 $ make

2.GDBを動かす

 $ gdb sapi/cli/php

ブレイクポイントを仕込む

  • 関数に仕込む
 $ gdb sapi/cli/php
 (gdb) break zif_count
 Breakpoint 1 at 0x100116e9d: file array.c, line 312.
 (gdb) php -r "echo count(array(1,2,3,4,5));"

上記からcount関数はarray.cにあることがわかる

  • あるファイルの特定の行数に仕込む
 $ gdb sapi/cli/php
 (gdb) break array.c:312
 Breakpoint 1 at 0x100116e9d: file array.c, line 312.
 Starting program: /Users/yoichi/work/php/php-src/sapi/cli/php -r "echo count(array(1,2,3,4,5));"
 Reading symbols for shared libraries ++.............................. done
 
 Breakpoint 1, zif_count (ht=1, return_value=0x10066ea48, return_value_ptr=0x100634158, this_ptr=0x0, return_value_used=1) at array.c:312
 312             long mode = COUNT_NORMAL;