sakawork @ ウィキ

メニュー

▼プログラミング言語関連
▼プロトコル関連
▼Web関連



ページ編集支援





リンク





UNIX > デバッガ


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


デバッガ

gdbについて書く
dbxに(あまり覚えていないが)簡単な設定変更で
gdbと同じようなインタフェースに変更できる(gdb on/off ?)
とりあえずのところgdbについてだけ書いておく

gdb

GNUのデバッガ
コンパイル時に-gオプションをつけた実行ファイルに対してデバッグできる
$ gdb &italic(){実行ファイル}
 コアファイルの解析
$ gdb &italic(){実行ファイル} core

実行オプション

オプション 動作
-s ファイル名 ファイル名のファイルをシンボルテーブルとする
-e ファイル名 ファイル名を実行ファイルとして使用
-c ファイル名 ファイル名をコアファイルとして使用
-x ファイル名 ファイル名をコマンドファイルとして実行
コマンドファイル:gdbコマンドをあらかじめ書いたファイル
-d ディレクトリ名 ソースファイルを検索するパスにディレクトリ名のディレクトリを追加
-r シンボルファイル内のシンボルテーブル全体を起動直後に読み込む
起動が遅くなるが毎度毎度呼ばない分動作は速くなる

主なコマンド

コマンド(短縮) コマンド 動作
r run 実行 実行時の引数をオプションとしてつけられる
r 1 2 3 ・・・など
q quit 終了
h help ヘルプ表示 コマンド(短縮でも可)指定でコマンドのヘルプ
b 位置 breakpoint ブレークポイント設定 デフォルトは現在の実行位置をブレークポイントにする
行番号,関数名,ファイル名:行番号・・・などの指定ができる
d 番号 delete 指定した番号のブレークポイントを削除
n next 次の処理を実行(関数の中には入らない)
s step 次の処理を実行、関数の内部に入る
c continue 次のブレークポイントまで飛ぶ
u up 呼び出した上位の関数へ移動、移動できない場合は次の処理を実行
d down その行で呼ばれる下位の関数へ移動
p print 出力 p/format でフォーマット指定可能
C言語と同じように型変換して出力することも可能
値を代入したり関数実行も可能
printのオプション 内容
p/a アドレス
p/c 文字
p/d 符号付き10進数
p/f 浮動小数点数
p/o 8進数
p/t 2進数
p/u 符号なし10進数
p/x 16進数
x hex メモリの内容表示 printと同じオプションのほかに以下が使える
hexのオプション 内容
x/s 文字列
x/i 逆アセンブル
what whatis 変数の型を表示
whe where 現在実行している箇所へ到達するまでの関数の呼び出しを示す
bt(backtrace)やi sと同じ
i info 情報表示
infoのオプション 内容
i b ブレークポイント・ウォッチポイント・キャッチポイントの表示
i s 関数スタックの表示
i th スレッドの表示
j jump 指定した関数・アドレス・行数へ飛んで実行継続
l list リスト表示 デフォルトで直近、関数・行番号・ファイル指定もできる
cond condition ブレークポイントに停止条件を設定
cond 2 iCnt==0 ←ブレークポイント2はiCnt=0のときだけ停止
cont 2 iCnt=0 ←ブレークポイント2で停止するとiCntに0が代入される(誤用?)
wat watch 指定した式が変更されるときに停止
w iCnt==0 ←iCnt=0のとき停止
awat awatch 指定した対象が読み書きアクセスされるときに停止
rwat watch 指定した対象が読まれたときに停止
cat catch 指定されたイベントが発生した時に停止
catchのオプション 内容
cat throw C++例外の発生
cat catch C++例外のキャッチ
cat exec execの呼び出し(HP-UNIXのみ)
cat fork forkの呼び出し(HP-UNIXのみ)
cat vfork vforkの呼び出し(HP-UNIXのみ)
tc tcatch 1回だけ停止させるキャッチポイント
thr thread 指定スレッドへ移動
at プロセス番号 attach 実行中のプロセスにアタッチする
det detach デタッチする

小技/TIPSなど

  • 同じような動作確認などを何度も行う場合
  あらかじめブレークポイント設定のコマンドをファイルに書いておき
  -xで読み込む
  • 動作中のプロセスをデバッグするには
  gdbを立ち上げブレークポイントを設定しておく
  psコマンドでプロセス番号を調べattachする
  quitする前にdetachすること
  • デッドロックや無限ループなどが起きている場合
  上記の動作中のプロセスのデバッグ方法で解析するか
  場合によってはkillコマンドでわざとにコアを吐かせて解析する
  • コアファイルの解析
  gdbの引数で実行ファイルとコアファイルを指定する
  where/btコマンドで落ちた箇所を調べる



更新履歴

取得中です。


タグクラウド


アクセス

本日のアクセス
-
昨日のアクセス
-