3

1.exe では、IDE を起動して 1.exe をデバッガにアタッチして侵入するのに十分な時間がありません。

4

6 に答える 6

6

この場合、NT サービスと同じアプローチを取ることをお勧めします。それらも開始され、通常、スタートアップ ルーチン用のデバッガをアタッチするのに十分な時間がありません。

詳細はこちら: http://www.debuginfo.com/articles/debugstartup.html

つまり、2 番目の exe のレジストリ エントリを追加します。

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\2.exe Debugger = "c:\progs\msvs\common7\ide\devenv.exe /debugexe" (REG_SZ)

設定に合わせて c:\progrs\msms\ を変更します。

それが役立つことを願っています。

于 2008-09-16T19:07:34.053 に答える
0

Visual Studio 以外のデバッガーを検討する場合は、WinDBG で子プロセスを自動デバッグできます (ネイティブ コードのみ)。

于 2008-09-16T19:12:57.533 に答える
0

使用している言語については言及していません。ただし、C# または VB.NET を使用している場合は、Debug.Break() または Stop を追加して、デバッガーをプロセスにアタッチするプロンプトをトリガーできます。

または、上記のように、 Console.Readline() または MessageBox.Show() などを使用して、デバッガーをアタッチできるまでプロセスの開始を一時停止します。

于 2008-09-16T20:07:34.923 に答える
0

1.exe のソースがあると仮定し (デバッグしている場合)、デバッガーをアタッチするのに十分な時間ハングアップさせるステートメントを最初の近くに挿入するだけです。(必死でインタラクティブでない場合は getch() を使用してください。)

アタッチ後、次のステートメントにスキップして放します。

于 2008-09-16T19:05:53.667 に答える
0

デバッグ ビルド用にいくつかのプリプロセッサ コマンドを入れることができます。ただし、リリース モードでリリースをビルドすることを忘れないでください。

#ifdef DEBUG
Thread.Sleep(10000);
#endif
于 2008-09-16T19:06:12.433 に答える
0

1.exe はどのように起動しますか? CreateProcess() を使用して起動できる場合は、中断された状態でプロセスを開始し、デバッガーをアタッチしてから、新しいプロセスを解放できます。

于 2008-09-16T19:10:23.297 に答える