Cプログラムをデバッグする基本的な方法

 

The Geek Stuff

How to Debug C Program using gdb in 5 Simple Steps - The Geek Stuffにおいてgdbを使ったCプログラムの基本的なデバッグ方法が紹介されている。あらかじめ問題を仕込んである短いCのソースコードと、それをデバッグオプション付きでビルドして、実際にどのようにデバッグを実施すればいいかが簡潔にまとまっていて参考になる。同記事では次のようなCで記述したソースコードを用意。

階乗計算プログラムをデバッグする例

このソースコードは階乗を計算するという内容。「for (i = 1; i < num; i++) j = j * i」の部分が階乗計算部分だが、変数jが初期化されていないため階乗の計算になっていない。jにどういった数値が入っているかは実行する環境によって左右される。How to Debug C Program using gdb in 5 Simple Stepsでは階乗計算が実施される前の段階にブレークポイントを設定して変数の内容を表示させ、jを適切な値に初期化することを忘れていることを発見するというストーリーで使い方を紹介している。

#include <stdio.h>

int
main()
{
    int     i, num, j;
    printf("Enter the number: ");
    scanf("%d", &num);

    for (i = 1; i < num; i++)
        j = j * i;

    printf("The factorial of %d is %d\n", num, j);
}

実際の処理の流れを上の画像に、基本的なコマンドと操作方法を次にまとめておく。

コマンド 内容
gcc -g コンパイル時に-gを指定する。コンパイル後のバイナリにデバック情報が埋め込まれるため、デバッグが簡単になる。
gdb command コンパイルしたコマンドを指定してデバッガgdbを実行する。
gdbの基本的なコマンド 内容
run プログラムを実行する。
break 行数 指定した行でプログラムの実行を停止するようにする(ブレークポイントの設定)。デバッグするにあたってもっとも基本となる方法。
list ソースコードを表示する。行数を指定することもできる。
print 変数 変数の内容を出力する。デバッグするにあたってもっとも基本となる方法。
c 次のブレークポイントまで実行する。
n 次の1行を実行する。関数は1つの処理として実行する。
s 次の処理を実行する。関数を処理する場合、その関数へ飛んで一つ一つ処理を実施する。


転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

有吉弘行、夏目アナとの熱愛報道否定「誤報記事を書かれてしまって…」
[13:36 8/28] エンタメ
『ガンダムサンダーボルト』版MGサイコザクC3で公開、巨大バックパック再現
[13:34 8/28] ホビー
和田アキ子、清原テレビ復帰「『おまかせ!』は向いてない」
[13:04 8/28] エンタメ
[明日のとと姉ちゃん]8月29日 第127回 常子、星野への思い断ち切れず…
[13:00 8/28] エンタメ
マツコ、スポーツ番組MCに初挑戦 - リオパラリンピック選手に直撃取材
[12:54 8/28] エンタメ

求人情報