2

私のビジュアル C++ コードでは、ブレークポイントをトリガーするために __debugbreak ステートメントを導入しました。/CLR オプションを使用してプロジェクトをコンパイルしました。ただし、実行中にブレークポイントはトリガーされません。なぜこれが起こるのですか?私が自分自身を撃つ前に助けてください。これは64ビットの実行可能ファイルです。

編集:私は今 DebugBreak() ステートメントを試してみましたが、どのステートメントでわからないので、永久にハングしています。dll は、別のマシン上のクライアントからアクセスしているサーバー プログラムによって使用されます。これが問題の原因ですか?サーバーマシン自体から実行する必要がありますか? クライアント マシンでデバッガー セッションを正常に起動できなかったとしても、ブレークポイントがトリガーされたというメッセージが少なくとも報告されることを期待していました。.pdb ファイルは、サーバー上の dll と同じ場所にあります。

更新: サーバー マシン自体でクライアント プログラムを実行しようとしましたが、それでも DebugBreak() によって無限ハングが発生します。デバッガー セッションが起動しません。

4

2 に答える 2

2

私はこのコードを C# で使用しています。おそらく C++ に適応させることができます

#if DEBUG
var endTime = DateTime.Now.AddSeconds(30);
while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime)
  System.Threading.Thread.Sleep(10);

if (System.Diagnostics.Debugger.IsAttached)
{
  System.Diagnostics.Debugger.Break();
}
#endif
于 2012-10-24T18:45:13.690 に答える
1

デバッガー内から F9 (ブレークポイント) を使用できないのはなぜですか? DebugBreak();ただし、Aは機能するはずです。

DLL/EXE を直接ロードできない場合は、[デバッグ] メニューから [プロセスにアタッチ] を選択できます (Visual Studio を使用していることが望ましい)。

于 2011-07-29T14:16:55.077 に答える