Visual Studioのリモートデバッグ機能(Remote Debugger)はとても便利なのですが、ごくたまにリモートデバッグがブレイクポイントで止まらずにデバッグ出来ないことがあります。
リモートデバッグの方法については以下にまとめました。
リモートデバッグが出来ない場合は、大抵以下のようなメッセージが表示されます。
ブレークポイントは、現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません。
今回、リモートデバッグ出来ない場合、
Visual Studioでデバッガーがブレイクポイントで止まらない(シンボルが読み込まれていません)時の対策法をまとめてみました。
目次
ソースと実行モジュールのアンマッチ
一番よくあるのがこれです。
実行しているデバッグしようとしているモジュールと、Visual Studioで開いているソースファイルが一致していないケースです。
ソースは最新になっていますか?
あるいは、ちゃんとビルドしたモジュールを実行していますか?
一つ古いモジュールを実行していませんか?
デバッグモジュールでビルドされているか?
Visual Studioでビルドする際、リリース(Release)ではなくデバッグ(Debug)でビルドしていますか?
デバッグ情報は、Debugフォルダ以下に作成される
.pdb (Program Debug Database)
という拡張子のファイルに保存されます。
Visual Studioのメニューから、
「ビルド」⇒「構成マネージャー」から
アクティブなソリューション構成が「Debug」になっていることを確認します。
プラットフォームは、多分「Any CPU」にしておくのがよいと思います。
プラットフォームの違い、ARMとx86/x64の違いについては以下にまとめました。
あと、念のため、
ソリューションの
「プロパティ」⇒「ビルド」の「詳細設定」
を開いてみましょう。
「デバッグ情報」が「full」になっていますか?
「none」や「pdb-only」になっていた時は、「full」にしてからビルドしましょう。
管理者で実行されているか?
Windows Vistaや、あるいはサービスなど管理者で実行しているモジュールをリモートデバッグしたい場合、Visual Studioも管理者で実行する必要があります。
いわゆるユーザーアカウント制御 (UAC、User Account Control) のためです。
UACについては以下にまとめました。
Visual Studioを右クリックで
「管理者として実行」を押して管理者として実行しましょう。
プロセスにアタッチするときに「自動:ネイティブコード」になっているか?
Visual Studioからプロセスにアタッチするときに、アタッチ先は「自動:ネイティブコード」になっていますか?
間違って、コードの種類が選択されていると、その種類のコードでないとデバッグできなくなってしまいます。
サービスのプログラムをデバッグする
サービスのプログラムをデバッグ実行する方法です。
- OnStartメソッドに「Debugger.Launch()」と書く
- サービスを開始する
- 「Visual Studioでデバッグしますか?」と聞いてくるので、開いておいた開発環境に相当するVisual Studioを一覧から選ぶ
- 「アタッチしますか?」と聞いてくるので、「する」を選択する
サービスのプログラムはこれでデバッグ実行できるはずです。
↓Visual Studioのデバッグに関する本はコチラをご覧ください。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント