デバッグ時のウィンドウ

実行状況の確認

ウォッチ ウィンドウ (Watch Window)

表示形式の変更

ウォッチで変数を指定するときに「var,h」のようにカンマに続けて書式指定子を記述することで、ウォッチでの表示形式を変更できます。

言語によって、適用できる書式指定子が一部異なります。

C++
書式指定子 形式 表示例
表示
d 10進整数 (decimal integer) 10 10
x または h 16進整数 (hexadecimal integer) 10 0x0000000a
     
wm Windows メッセージ番号 16 WM_CLOSE
     
C++ の書式指定子 | MSDN
ポインタ
記述例 出力内容
p,3 または p,[3] ポインタpの、先頭から3個の要素
p+1,3 ポインタpの、2個目から3個の要素
配列としてのポインターのサイズ指定子 - C++ の書式指定子 | MSDN

ポインタの要素に対して書式指定するときには、p,3xのように数の後に書式指定子を記述します。

オブジェクト 適用例
int a = 10;
int p[] = { 1, 2, 3 };
int* pp = p;
C++/CLI
書式指定子 形式 表示例
d または i 符号付き10進整数  
u 符号なし10進整数  
o    
   
C++/CLI での相互運用機能デバッグ用の書式指定子 - C++ の書式指定子

C++/CLIでも、C++同様にポインタを配列として表示できます。C++/CLI での相互運用機能デバッグでの配列としてのポインターのサイズ指定子 - C++ の書式指定子 | MSDN

ただしそのためには、デバッガのマネージ互換モードを有効にする必要があります。

C#
書式指定子 形式 表示例
表示
d 10進整数 10 10
h 16進整数 10 0x0000000a
ac 式の評価の強制    
nq クオートなしの文字列 "My String" My String
hidden      
raw      
results      
C# の書式指定子 | MSDN

データヒント (DataTip)

変数にマウス ポインタを合わせることで、その変数の値などをツールチップのような表示で確認できる機能です。コード エディターでのデータ ヒントのデータ値の表示 | MSDN

データヒントで使用されるフォントは、オプションの[フォントおよび色]の[データヒント]の項目で変更できます。[フォントおよび色] ([オプション] ダイアログ ボックス - [環境]) - Visual Studio (Windows) | Microsoft Learn

トラブル対処法

値を確認できない
エラー内容 解決方法
Unable to resolve identifier: '***" ***の名前が解決されるように、名前空間などを指定する
***.dll!0x*** (追加情報のためのシンボルの読み込み) エラーを右クリックして、[シンボルの読み込み]からシンボルを読み込む
式エバリュエーターでの内部エラーです。(The expression evaluator encountered an internal error.) デバッグの設定で[従来の C# および VB の式エバリュエーターを使用する]を有効にする c# - "Internal error in the expression evaluator" - Stack Overflow Expression Evaluator Error CXX0031 | Microsoft Learn
To inspect the native object, enable native code debugging プロジェクトの設定で[ネイティブ コードのデバッグを有効にする (Enable native code debugging)]を有効にする
この式の値は適切でない可能性があります。次の理由により、評価できませんでした:  
'エラー: マネージ EE は式の構文を理解しません'  

呼び出し履歴ウィンドウ (Call Stack Window)

ウィンドウ上で右クリックすることで、表示内容を変更できます。

表示されるのはアクティブなスレッドの履歴だけのため、他のスレッドの内容はスレッド ウィンドウから切り替えてから確認します。

スレッド ウィンドウ (Threads Window)

項目 意味
状態 矢印が表示されているのが、アクティブなスレッド
ID スレッドの識別番号。現在のスレッドのIDは、 で取得できる
マネージド ID
(Managed ID)
マネージド スレッドの識別番号。このマネージド IDは、Thread.ManagedThreadIdで取得できる
カテゴリ (分類)
(Category)
 
名前
(Name)
スレッド名
場所
(Location)
スレッドに関連付けられている関数名またはアドレス

場所がアドレスで表示されるときには、そのファイルのシンボルを読み込むことで関数名を確認できる。場所を展開することで、スレッドの呼び出し履歴を確認できる

優先度 (優先順位)
(Priority)
スレッドのスケジューリングの優先度
関係マスク
(Affinity Mask)
 
中断回数 (中断)
(Suspended Count)
スレッドの中断回数
プロセス名
(Process Name)
 

詳細を確認できないスレッドは、Process Explorerで対象のプロセスのPropertiesを開き、それの[Threads]タブで確認します。

名前
名前  
ntdll.dll!TppWorkerThread c++ - Why does Windows 10 start extra threads in my program? - Stack Overflow

出力ウィンドウ (Output Window)

出力される内容は、コンテキストメニューから変更できます。

  • 例外メッセージ
  • メッセージのフィルター処理のステップ実行
  • モジュールの読み込みメッセージ
  • モジュールのアンロード メッセージ
  • プロセス終了メッセージ
  • スレッド終了メッセージ
  • プログラム出力
[出力] ウィンドウ | MSDN

ビルド時に出力される内容は、MSBuildの出力設定から変更できます。

意図的な出力

ブレークポイントを設定することで、変数の値やメッセージを出力できます。またコード上から出力することもできます。

動作の確認

イミディエイト ウィンドウ (Immediate Window)

ウィンドウ内にコードを記述し、式の評価や変数の値の確認などを行えます。[イミディエイト ウィンドウ] | MSDN

コードの確認

混合モード ウィンドウ (Disassembly Window)

中断モード時に、エディタ上のコンテキストメニューから[逆アセンブルを表示]を選択することで、逆アセンブルしたコードを確認できます。[混合モード] ウィンドウ | MSDN

設定

例外設定 (Exception Settings)

指定の例外が発生したときに、デバッガの実行を中断させられます。これを指定しておくことで、例外の発生場所を簡単に特定できます。[例外設定] ウィンドウで例外を管理する - デバッガーでの例外を管理する - Visual Studio | Microsoft Learn

一覧にない例外に対しては、例外の大別ごとにある[<この一覧にない *** すべて>]をチェックすることで対応できます。

Microsoft Learnから検索