TS Studio
  Top > パソコン > GDBデバッガの使い方

更新日:2023/5/9

GDBデバッガの使い方

GDBデバッガの使い方についてのオンラインマニュアルです。
以前のGDBデバッガの使い方の内容を全面的に改めています。

目次


GDBデバッガの起動

GDBデバッガを起動するコマンドgdbは、引数に実行ファイルとcoreファイルを指定します。coreファイルが存在しないときは省略することができます。実行ファイルfile とcoreファイルをデバッグするときは次のように指定します。

gdb file [core]

GDBが起動すると(GDB)というプロンプトがシェルの左端に表示されます。
次にデバッグのためのコマンドを紹介します。

coreファイルを利用したデバッグ

コマンド名 コマンドの説明
quit GDBを終了します。
^C 実行中のGDBコマンドを中止します。
where 終了時に実行していた位置を表示します。 引数は不要です。
list 引数に指定した付近のコードを表示します。引数には、ファイル名・行番号・関数名が指定できます。file.cの14行目を表示するときは、list file.c:14のように指定します。
print

変数の値を変数の型に応じて表示します。変数 var の値を表示するときは、print varのように指定します。

/formatを付加すると出力書式を指定できます。

書式 意味 書式 意味
/o 8進 /d 符号付き10進
/x 16進 /u 符号なし10進
/t 2進 /c 文字
/f 浮動小数点 /a アドレス

変数 var の値を2進数で表示するときは、print/t varのように指定します。

x メモリの内容を表示します。printコマンドと同じ出力書式に加えて以下の出力書式と繰り返し回数を指定できます。
/s 文字列表示
/i インストラクション表示(逆アセンブル)
変数 name の文字列表示は、x/s nameのように指定します。
メモリの指定領域0x1370の逆アセンブルは、x/5i 0x1370のように指定します。
set variable 変数の値を変更します。変数 var の値を1に変更するときは、set variable var=1のように指定します。
whatis 変数の型を表示します。引数には変数名を指定します。
ptype 変数の型がstruct、union、enum、classである変数の型の定義を表示します。構造体dataの型の定義を表示するときは、ptype struct dataのように指定します。
up
down
関数の間の移動をします。引数は不要です。

ブレークポイントを利用したデバッグ

コマンド名 コマンドの説明
break ブレークポイントを設定します。引数には、ファイル名・行番号・関数名を指定することができます。設定するとブレークポイント番号が付けられます。ブレークポイントに達するとプログラムの実行を一時的に止めることができます。
info breakpoint 現在設定されているブレークポイントを表示します。
condition ブレークポイントにブレーク条件を設定します。引数は、ブレークポイント番号・条件の順に指定します。引数なしで実行するとブレーク条件を解除します。
watch 指定した式の値が変更されたときにプログラムの実行を一時的に止めるウォッチポイントを設定します。watch i==10と入力すると、変数 i の値が10に変わったときに実行が止まります。
run プログラムの実行を開始します。 ブレークポイントで一時停止して状態を表示します。
display ブレークポイントで止まるごとに、 指定した変数の値を表示します。
cont プログラムの実行を再開します。 次のブレークポイントまで実行します。
step
next
finish

stepi
nexti

step,next,finishは、プログラムを少しずつ実行します。
step 関数呼び出しの中でも1行ずつ実行します
next 関数呼び出し全体を1行として1行ずつ実行します
finish 現在の関数が復帰するまで実行します
stepi,nextiは、機械語の1インストラクションを実行します。使用するときは
display/i $pcを実行して、プログラムカウンタ$pcを常時表示させておいた方がいいでしょう。
delete
clear
ブレークポイントを解除します。deleteにはブレークポイント番号を指定し、clearには位置を指定します。
disable
enable
disableは、ブレークポイントを一時的に無効にします。enableは、再びブレークポイントを有効にします。引数にはブレークポイント番号を指定します。
attach
detach
attachは、実行中のプロセスをGDBに接続しデバッグします。引数にはプロセスIDを指定します。detachはプロセスを切り離します。

コンピュータ・IT 【本】 [Amazon]


Copyright(C) 1997-2022 Suzumura Tomohiro All rights reserved.