ユノミズム

オーディオ、音楽、投資ネタ

Visual Studio 2008 デバッグにてステップインできない場合の対処方法

Visual Studioでのデバッグ中、作成した関数にステップインできない場合の対処方法をまとめてみました。

現象

Visual Studioでステップ実行中に関数にステップインしようとすると、以下のようなメッセージが表示されることがあります。そのまま逆アセンブル実行するとアセンブラが表示され、期待したソースコードが表示されません。
f:id:yunomin_s:20160330183007p:plain

また関数内にあらかじめブレークポイントを貼った場合には、ブレークポイントのアイコンが白抜き表示となり、以下のような警告が表示されます。
f:id:yunomin_s:20160330183013p:plain
メッセージにある通り、生成されたデバッグ情報と現在のソースコードが一致していないようです。
そういえば、Visual Studio以外のエディタでソースコードを編集した記憶があります。
おそらく原因はこれでしょう。

クリーンビルド、デバッグ情報を削除してみたものの…

それならば、デバッグ情報を一旦きれいにしてみては?と考え、クリーンビルドを実行してみました。
が、現象は改善されず。
今度はワークスペースにあるDebugフォルダごと削除してみました。
リビルドで新しいDebugフォルダが生成されましたが、現象は直りませんでした。

オプション設定のデバッグの項目を変更しよう

f:id:yunomin_s:20160330183018p:plain
マイクロソフト公式の情報を確認したところ、オプション設定のデバッグ項目を変更することで対応できるようです。メニューより[ツール]→[オプション]を選択し、オプション設定のデバッグの項目をクリックします。
その中の「元のバージョンと完全に一致するソースコードを必要とする」という項目のチェックボックスを外します。
再びビルドして実行すると現象が改善されました。

まとめ

推測ですがVisual Studioではソースコードチェックサム情報があり、これがデバッグ情報と紐付いているようです。Visual Studio上でソースコードを編集した場合はチェックサムが更新されますが、他のエディタで編集した場合はこれが更新されないため、ソースコードデバッグ情報に不一致が生じてしまうのではないでしょうか。
あくまでも推測ですので間違っていたらごめんなさい。