ソフトウェア技術者のためのバグ百科事典(13)デバッガとビルド構成のバグ:山浦恒央の“くみこみ”な話(134)(2/3 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第13回は、「デバッガの使用方法」と「ビルド構成に関するバグ」を取り上げます。
4.具体的なデバッグの方法:Visual Studioを使って
4.1 使用するツール
今回は、Visual Studio Community2019を使用してデバッグする方法を解説します。デバッガは大きく分けて、コマンド形式とGUI形式があります。今回は、GUI形式です。
4.2 ビルド構成の違い
プログラムから実行形式のファイルを作る場合、デバッグ情報付きでビルドするか、デバッグ情報なしでビルドするか選択します。Visual Studioでは、「デバッグビルド」と「リリースビルド」と呼ばれているようです(図1)。
図1は、Visual Studioの画面例です。デバッガを使用する場合は、「Debug」を選択し、使用しない場合は「Release」を選択してください。
4.3 デバッガの基本操作
デバッガの簡単な操作方法を説明します。
4.3.1 ブレークポイントの設定
ブレークポイントとは、実行時に好きなところで一時停止する機能です(リスト5)。
リスト5は、ブレークポイントの設定例です。「27」と書いてある左側に赤い丸印が付いています。あらかじめブレークポイントを左クリックして設定し、「デバッグ(D)→デバッグ開始(S)」を選択すると、設定した場所でプログラムが一時停止します。なお、実行パスによっては、必ずしもブレークポイントで一時停止するとは限りません。
4.3.2 ステップ実行
デバッガの最大の利点は、一時停止した場所から1行ずつ実行できるステップ実行機能です。表1に3つの操作を示します。
機能名 | 説明 | 備考 |
---|---|---|
ステップイン | 関数の中に入る | − |
ステップオーバー | 1行ずつ実行する | ただし、関数は素通りする |
ステップアウト | 関数から抜ける | − |
表1 ステップ実行機能の概要 |
リスト5の状態で、mystrcatの関数内に入りたい場合は、「ステップイン」を使用し、関数を通り抜けて27行目を実行する場合は、「ステップオーバー」、ステップインした関数から即抜ける場合は、「ステップアウト」を使用します。
使用例としては、一時停止したい場所にブレークポイントを設定し、そこから、ステップオーバーをしながらプログラムを実行します。ステップ実行時に、関数内を見たい場合は、ステップインし、すぐに関数から抜けたい場合は、ステップアウトで関数から抜けるという流れとなります。
4.3.3 ローカルウィンドウ
デバッガを使うと、関連した変数の中身を確認できます。例えば、リスト6の14行目にブレークポイントを設定し、デバッガを起動してみます。
ローカルウィンドウを確認すると、ローカルスコープに登場する変数の値を確認できます(図2)。
図2は、ローカルウィンドウの表示画面です。変数ptr、s1、s2の変数の中身が書いてありますね。変数の中身が分かると、ステップオーバーと並行して中身の変化を確認できますので、バグ解決の貴重なヒントとなります。なお、デフォルト設定ならば、デバッガ使用時の画面下部に現れます。
Copyright © ITmedia, Inc. All Rights Reserved.