連載
» 2020年10月19日 10時00分 公開

ソフトウェア技術者のためのバグ百科事典(13)デバッガとビルド構成のバグ山浦恒央の“くみこみ”な話(134)(2/3 ページ)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

4.具体的なデバッグの方法:Visual Studioを使って

4.1 使用するツール

 今回は、Visual Studio Community2019を使用してデバッグする方法を解説します。デバッガは大きく分けて、コマンド形式とGUI形式があります。今回は、GUI形式です。

4.2 ビルド構成の違い

 プログラムから実行形式のファイルを作る場合、デバッグ情報付きでビルドするか、デバッグ情報なしでビルドするか選択します。Visual Studioでは、「デバッグビルド」と「リリースビルド」と呼ばれているようです(図1)。

図1 図1 ビルド構成の設定

 図1は、Visual Studioの画面例です。デバッガを使用する場合は、「Debug」を選択し、使用しない場合は「Release」を選択してください。

4.3 デバッガの基本操作

 デバッガの簡単な操作方法を説明します。

4.3.1 ブレークポイントの設定

 ブレークポイントとは、実行時に好きなところで一時停止する機能です(リスト5)。

リスト5 リスト5 ブレークポイント設定例

 リスト5は、ブレークポイントの設定例です。「27」と書いてある左側に赤い丸印が付いています。あらかじめブレークポイントを左クリックして設定し、「デバッグ(D)→デバッグ開始(S)」を選択すると、設定した場所でプログラムが一時停止します。なお、実行パスによっては、必ずしもブレークポイントで一時停止するとは限りません。

4.3.2 ステップ実行

 デバッガの最大の利点は、一時停止した場所から1行ずつ実行できるステップ実行機能です。表1に3つの操作を示します。

機能名 説明 備考
ステップイン 関数の中に入る
ステップオーバー 1行ずつ実行する ただし、関数は素通りする
ステップアウト 関数から抜ける
表1 ステップ実行機能の概要

 リスト5の状態で、mystrcatの関数内に入りたい場合は、「ステップイン」を使用し、関数を通り抜けて27行目を実行する場合は、「ステップオーバー」、ステップインした関数から即抜ける場合は、「ステップアウト」を使用します。

 使用例としては、一時停止したい場所にブレークポイントを設定し、そこから、ステップオーバーをしながらプログラムを実行します。ステップ実行時に、関数内を見たい場合は、ステップインし、すぐに関数から抜けたい場合は、ステップアウトで関数から抜けるという流れとなります。

4.3.3 ローカルウィンドウ

 デバッガを使うと、関連した変数の中身を確認できます。例えば、リスト6の14行目にブレークポイントを設定し、デバッガを起動してみます。

リスト6 リスト6 ブレークポイントの設定

 ローカルウィンドウを確認すると、ローカルスコープに登場する変数の値を確認できます(図2)。

図2 図2 ローカルウィンドウ

 図2は、ローカルウィンドウの表示画面です。変数ptr、s1、s2の変数の中身が書いてありますね。変数の中身が分かると、ステップオーバーと並行して中身の変化を確認できますので、バグ解決の貴重なヒントとなります。なお、デフォルト設定ならば、デバッガ使用時の画面下部に現れます。

Copyright © ITmedia, Inc. All Rights Reserved.