「gdb」の版間の差分
提供: セキュリティ
(相違点なし)
|
2014年2月22日 (土) 00:24時点における版
gdb とは、GNUプロジェクトのデバッガです。
読み方
- gdb
- じーでぃーびー
目次
概要
gdb
バージョン
GDB 7.7
2014/02/06にリリースされました。
- Pythonスクリプティングサポートの改善
- C++の改善
- 新しいコマンド、オプション、便利な変数/オプション
- リモートプロトコルとGDBサーバの改善
- 新しいターゲット設定(Nios II, TI MSP430)
- GDB Windows x64 unwinding データサポート
- AArch64 GNU/LinuxでのSystem Tap SDT probes サポート
- CTF(Common Trace Format, コモントレースフォーマット)のサポート
- 新しいスクリプトgcoreとgdb-add-index.sh
- arm*-linux レコード/リプレイのサポートの改善
- a.out NetBSD と OpenBSD obsolete 設定のサポートの削除。ELF variants の設定はサポートされています。
- set|show remotebaud コマンドは、推奨されません。 set|show serial baudを使用します。
インストール
FreeBSDでは、デフォルトでインストールされています。
Ubuntu/Debianにインストールする場合
apt-get コマンドでインストールする場合です。
sudo apt-get install gdb
CentOSにインストールする場合
sudo yum -y install gdb
使い方
コマンドの起動
コマンドをgdbでデバッグする。
gdb a.out
プロセスIDを指定して実行する。
gdb a.out pid
gdb -pid pid
コマンドとコアファイルを指定して起動する。
gdb a.out core.pid
ブレイクポイント
(gdb) b main
実行
(gdb) run
値と式の表示
(gdb) p main
メモリの調査
変数p
(gdb) x p (gdb) x/w p
(gdb) x/32w $sp 0xffffc0dc: 0x0804844a 0x00000001 0xffffc118 0xffffc120 0xffffc0ec: 0xffffc100 0xffffc114 0x00000000 0xffffc110 0xffffc0fc: 0x080483b8 0x28050a80 0x00000001 0xffffc118 0xffffc10c: 0x00000000 0x00000000 0x00000001 0xffffc3c8 0xffffc11c: 0x00000000 0xffffc401 0xffffc40c 0xffffc415 0xffffc12c: 0xffffc423 0xffffc437 0xffffc82d 0xffffc836 0xffffc13c: 0xffffc845 0xffffc851 0xffffc860 0xffffc877 0xffffc14c: 0xffffc88d 0xffffc95e 0xffffc973 0xffffc97f
次を実行
(gdb) n
ソースを表示
(gdb) l 6 #include <stdlib.h> 7 void 8 foo() 9 { 10 (void) puts("OK"); 11 exit(EXIT_SUCCESS); 12 } 13 int 14 main(int argc, char const* argv[]) 15 {
逆アセンブル
(gdb) disassemble main Dump of assembler code for function main: 0x080484f0 <main+0>: lea 0x4(%esp),%ecx 0x080484f4 <main+4>: and $0xfffffff0,%esp 0x080484f7 <main+7>: pushl -0x4(%ecx) 0x080484fa <main+10>: push %ebp 0x080484fb <main+11>: mov %esp,%ebp 0x080484fd <main+13>: push %ecx 0x080484fe <main+14>: sub $0x14,%esp 0x08048501 <main+17>: lea -0x5(%ebp),%eax 0x08048504 <main+20>: mov %eax,(%esp) 0x08048507 <main+23>: call 0x8048348 <gets@plt> 0x0804850c <main+28>: mov $0x0,%eax 0x08048511 <main+33>: add $0x14,%esp 0x08048514 <main+36>: pop %ecx 0x08048515 <main+37>: pop %ebp 0x08048516 <main+38>: lea -0x4(%ecx),%esp 0x08048519 <main+41>: ret End of assembler dump.
レジスタを調べる
(gdb) info registers eax 0xffffffff -1 ecx 0x2 2 edx 0x0 0 ebx 0x1 1 esp 0xffffc0dc 0xffffc0dc ebp 0xffffc0f8 0xffffc0f8 esi 0xffffc118 -16104 edi 0xffffc120 -16096 eip 0x80484f0 0x80484f0 eflags 0x282 642 cs 0x33 51 ss 0x3b 59 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0
(gdb) info registers eax eax 0xffffffff -1
コアの取得
(gdb) gcore core
関連項目
- IDA Pro: 逆アセンブラ
- OllyDbg
- Immunity Debugger
- WinDbg
- gdb
- cgdb: GDB CUI フロントエンド
- DDD: GDB フロントエンド
- Insight: GDB フロントエンド
- gcore
- gdbを用いたprintfデバッグ