1 .編譯選項
1.1 gcc -g ソースコード名
「-g」オプションを付けてビルドを行うことで、「gdb」でデバッグ可能となります。
デバッグの為の情報が増えますので生成された実行ファイルのサイズは大きくなります。
2. 除錯命令
2.1. gdb programname
2.2. gdb --args programnmae arg1 arg2 ....
2.3.(gdb) b n (n 行數)break point 設定
(gdb) b 関數名
(gdb) b 関數名:行番號
(gdb) n (next)
(gdb) c (continue)
(gdb) s (step)
(gdb) r (run)
(gdb) q (quit)
(gdb) p/o 変數【8進表示】
(gdb) p/x 変數【16進表示】
(gdb) p/t 変數【2進表示】
(gdb) p/f 変數【浮動小數表示】
(gdb) p/d 変數【10進表示】
(gdb) p/u 変數【符號なし10進表示】
(gdb) p/c 変數【文字表示】
(gdb) p/a 変數【アドレス】
2.4.whatis 変數名 【変數の型を表示】
info b 【今まで設定したブレークポイントを表示する】
info stack 関數の呼び出しスタック
info thread/thread 存在しているスレッドを表示
3.linux ライブラリ中に関數を調べる方法
3.1 nm -d ライブラリ名 | grep 関數名
objdump -t ライブラリ名 | grep 関數名
4. linux 実行可能ファイルは依存するライブラリを調べる
4.1 ldd 実行可能ファイル名
linux除錯工具GDB
gdb偵錯程式除錯的物件是可執行檔案,使用gcc或者g 編譯器編譯源 時,必須加上 g才能使目標可執行檔案包含可被除錯的資訊。比如 gcc g o helloworld helloworld.c 編譯並連線程式,使之包含可被除錯資訊 gdb helloworld 使用gdb偵錯程式開啟hellowo...
GDB 除錯工具高階用法
ulimit c 檢視core檔案的生成開關,若為0則關閉 ulimit c unlimited 開啟開關,只在當前shell生效 sudo sh c echo e.core.p proc sys kernel core pattern 在當前目錄下生成core檔案,臨時生效 gdb process...
除錯工具 gdb
gcc o a.out a.c gdb q a.out break main info register i r objdump d a.out grep a20 main.轉換為機器 objdump m intel d a.out grep a20 main.gdb 設定 1 gdb q 2 se...