Visual Studioでデバッガーがブレイクポイントで止まらない(シンボルが読み込まれていません)時の対策法

program

Visual Studioのリモートデバッグ機能(Remote Debugger)はとても便利なのですが、ごくたまにリモートデバッグがブレイクポイントで止まらずにデバッグ出来ないことがあります。

リモートデバッグの方法については以下にまとめました。

Visual Studio 2012でリモートデバッグ(msvsmon.exe)を使うと開発環境は不要で便利
あるパソコンのVisual Studioで作ったC#のアプリケーションが、別のパソコンやOSでは正常に動作しないことがありま...

リモートデバッグが出来ない場合は、大抵以下のようなメッセージが表示されます。

ブレークポイントは、現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません。

今回、リモートデバッグ出来ない場合の対応方法をまとめてみました。

スポンサーリンク

ソースと実行モジュールのアンマッチ

一番よくあるのがこれです。

実行しているデバッグしようとしているモジュールと、Visual Studioで開いているソースファイルが一致していないケースです。

ソースは最新になっていますか?

あるいは、ちゃんとビルドしたモジュールを実行していますか?

一つ古いモジュールを実行していませんか?

デバッグモジュールでビルドされているか?

Visual Studioでビルドする際、リリース(Release)ではなくデバッグ(Debug)でビルドしていますか?

デバッグ情報は、Debugフォルダ以下に作成される .pdb (Program Debug Database) という拡張子のファイルに保存されます。

Visual Studioのメニューから、「ビルド」⇒「構成マネージャー」からアクティブなソリューション構成が「Debug」になっていることを確認します。

WS000176

プラットフォームは、多分「Any CPU」にしておくのがよいと思います。

プラットフォームの違い、ARMとx86/x64の違いについては以下にまとめました。

ARMとx86/x64の違い
プロセッサ(CPU)の話で必ず出てくる単語に「ARM」と「x86/x64」という単語があります。 これらは、プロセッサ...

あと、念のため、

ソリューションの「プロパティ」⇒「ビルド」の「詳細設定」を開いてみましょう。

「デバッグ情報」が「full」になっていますか?

「none」や「pdb-only」になっていた時は、「full」にしてからビルドしましょう。

管理者で実行されているか?

Windows Vistaや、あるいはサービスなど管理者で実行しているモジュールをリモートデバッグしたい場合、Visual Studioも管理者で実行する必要があります。

いわゆるユーザーアカウント制御 (UAC、User Account Control) のためです。

UACについては以下にまとめました。

メモ帳で「アクセスが拒否されました。」となった時の対応方法(ユーザーアカウント制御、UAC)
Windowsで、メモ帳(notepad、テキストエディター)を使っていると「アクセスが拒否されました」と表示されることがあ...

Visual Studioを右クリックで「管理者として実行」を押して管理者として実行しましょう。

プロセスにアタッチするときに「自動:ネイティブコード」になっているか?

Visual Studioからプロセスにアタッチするときに、アタッチ先は「自動:ネイティブコード」になっていますか?

WS000177

間違って、コードの種類が選択されていると、その種類のコードでないとデバッグできなくなってしまいます。

サービスのプログラムをデバッグする

サービスのプログラムをデバッグ実行する方法です。

  1. OnStartメソッドに「Debugger.Launch()」と書く
  2. サービスを開始する
  3. 「Visual Studioでデバッグしますか?」と聞いてくるので、開いておいた開発環境に相当するVisual Studioを一覧から選ぶ
  4. 「アタッチしますか?」と聞いてくるので、「する」を選択する

サービスのプログラムはこれでデバッグ実行できるはずです。

↓Visual Studioのデバッグに関する本はコチラをご覧ください。
Visual Studio デバッグ

最後まで読んでいただきありがとうござました。

この記事が気に入っていただけたらシェアしてくれると嬉しいです。

スポンサーリンク
スポンサーリンク
Translate »