○デバッグ


■デバックの開始方法 (a.exeのデバックを行います)

デバックを行うにはまず、コンパイル時にオプションを設定してコンパイルする必要があります
@-ggdbオプションを付けてコンパイルする

$ gcc a.c -ggdb -o a.exe


デバッカに対象となる実行ファイルを渡して実行してデバックを行います
Aデバッカgdbの起動

$ gdb a.exe


■デバッカの操作方法

デバッカの操作の流れとしては、始めにデバックしたい行にブレークポイント(break 行)を作成してから、
プログラムを実行(run)し、デバック作業を行います。

デバッカのコマンドを実行した後に、繰り返しEnterを押すと前回のコマンドが繰り返し実行されます
ステップ実行などを行う時に便利です。

▼ブレーク一覧表示  

(gdb)info break

▼ブレークポイントを14行目に設定

(gdb)break 14

▼全てのブレークポイントの削除

(gdb)delete

▼個別のブレークポイントの削除

(gdb)del ブレーク番号

▼ブレークポイントの有効/無効の切り替え

ブレークポイントを有効
(gdb)enable ブレーク番号

ブレークポイントを無効
(gdb)disable ブレーク番号

▼プログラムの実行

(gdb)run

▼ステップ実行

(gdb)step

▼継続実行

(gdb)continue

▼ウオッチ
ウオッチしたい変数の宣言が行われている行以降で一度ブレイクを作成してプログラムを実行させる
ブレイクで実行が停止したら目的の変数をウオッチに追加する。
その後、継続実行(continue)もしくはステップ実行(step)を行うと、変数の値の変化が確認できます。

(gdb)watch 変数名

▼実行中のプログラムの強制終了

(gdb)kill

▼gdbの終了

(gdb)quit




■gdbで実行中プロセスのデバッグ
コンパイル時にオプションを設定してコンパイルした実行ファイルは実行中のデバックができます

▼プロセスへのアタッチ

(gdb)attach プロセスID

▼プロセスへのデタッチ

(gdb)detach

プロセスへのアタッチ後はプロセスの実行が一時停止しますので、目的の行にブレークポイントを張り
継続実行(continue)させブレークポイントで停止後は上に記載したデバッカの操作方法と同じ要領で操作します




■プロファイルの取り方 (a.exeのプロファイルを取ります)

プロファイルを取るにはコンパイルオプションを設定してコンパイルする必要があります
@-pgオプションを付けてコンパイル

$ gcc a.c -pg -o a.exe

A作成された実行ファイルを実行するとプロファイルが取られ、gmon.outというファイルが作成される

Bgprofコマンドでプロファイルを表示する

$ gprof --flat-profile a.exe




Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ts/call  Ts/call  name
100.00      0.01     0.01                             __w32_sharedptr_initialize

  0.00      0.01     0.00      100     0.00     0.00  test2   ← メソッドの呼び出された回数や時間などが表示される
  0.00      0.01     0.00       10     0.00     0.00  test

 %         the percentage of the total running time of the
time       program used by this function.





▲トップページ > Linux と C