デバッガの使い方3

では、どうやってこれらのデバッガ用ウィンドウを使ってデバッグしていくのか、よくある例とともに簡単に説明していこう。

アクセスバイオレーションなどの例外発生時

これは一番わかりやすい。ちょっとわざとらしいけど、以下のようなソースコードで、strcpy を実行後、アクセスバイオレーションを起こす。


void func(char *pbuf)
{
strcpy("hoge",pbuf);
}

int main()
{
char* pbuf=NULL;
func(pbuf);

cout << pbuf << endl;

return 0;
}

この場合は コールスタック(Alt+7)を表示して、関数を追っていき関数を呼び出した時の引数の値を変数ウィンドウ(Alt+4)もしくは、ウォッチウィンドウ(Alt+3)で確かめる。これがNULLとか、ありえない値になってれば、その変数がおかしいことがわかる。もしくは変数にマウスカーソルを合わせていると、ツールチップで値が出てくる。

今度は、ではなぜそんな値が渡されるのかを探る。この例では、バッファを new なり malloc なりで確保していないためだということがわかる。

今回の説明内容まとめ

  • コールスタックの使い方
  • 変数ウィンドウの使い方