gdb

提供: セキュリティ
移動: 案内検索
スポンサーリンク

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にインストールする場合

CentOSyum コマンドでインストールする場合。

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

関連項目

デバッガ

アセンブラ

バイナリ

その他




スポンサーリンク