概要
VisualStudioでデバッグ中、ローカル変数または引数はこの命令ポインターで利用できないため、値を取得することはできません。最適化されている可能性があります。
と表示され、VisualStudioの自動変数ウィンドウで変数の中身が参照できなくなったことはありませんか?
それを解除して、変数を参照できるようにする方法です。
本題
下記の手順で参照できるようになります。
手順
- VisualStudioのプロジェクトタブを選択
- **[プロジェクト名]のプロパティ(E)**を選択
- ビルドを選択
- 全般の**コードの最適化(Z)**のチェックボックスを外す
なぜ参照できなくなる?
MSDN(方法 : 最適化されたコードをデバッグする)の記述によると、こういう理屈だそうです。
コンパイラは、ソース コードを最適化するときに命令を再配置したり再構成したりします。これにより、コンパイル後のコードの実行効率が向上します。しかし、この命令の整理が原因となり、一連の命令に対応するソース コードをデバッガーが識別できなくなる場合があります。
そういうわけで単に最適化をせずにビルドすることで参照できるようになったのでした。
ちなみに、最適化する・しないのステータスはプロジェクトのソースコードに影響を与えます。ソースコードをgit管理している場合はご注意ください。
[ProjectName].csproj
<Optimize>true<Optimize>
// ↑
// ↓
<Optimize>false<Optimize>
「参照できる」ものは何?
こちらのMSDN([自動変数] ウィンドウと [ローカル] ウィンドウ)が詳しいです。