1.exe では、IDE を起動して 1.exe をデバッガにアタッチして侵入するのに十分な時間がありません。
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\ を変更します。
それが役立つことを願っています。
Visual Studio 以外のデバッガーを検討する場合は、WinDBG で子プロセスを自動デバッグできます (ネイティブ コードのみ)。
使用している言語については言及していません。ただし、C# または VB.NET を使用している場合は、Debug.Break() または Stop を追加して、デバッガーをプロセスにアタッチするプロンプトをトリガーできます。
または、上記のように、 Console.Readline() または MessageBox.Show() などを使用して、デバッガーをアタッチできるまでプロセスの開始を一時停止します。
1.exe のソースがあると仮定し (デバッグしている場合)、デバッガーをアタッチするのに十分な時間ハングアップさせるステートメントを最初の近くに挿入するだけです。(必死でインタラクティブでない場合は getch() を使用してください。)
アタッチ後、次のステートメントにスキップして放します。
デバッグ ビルド用にいくつかのプリプロセッサ コマンドを入れることができます。ただし、リリース モードでリリースをビルドすることを忘れないでください。
#ifdef DEBUG
Thread.Sleep(10000);
#endif
1.exe はどのように起動しますか? CreateProcess() を使用して起動できる場合は、中断された状態でプロセスを開始し、デバッガーをアタッチしてから、新しいプロセスを解放できます。