2008-09-16 6 views

Antwort

0

Ich nehme an, Sie haben die Quelle zu 1.exe (wenn Sie es debuggen), dann fügen Sie einfach eine Anweisung in der Nähe des Anfangs, die es lange genug hängen, um einen Debugger anzuhängen. (getch() wenn Sie verzweifelt sind und es nicht interaktiv ist.)

Nach dem Anfügen, einfach zur nächsten Anweisung überspringen und loslassen.

0

Sie in einigen Präprozessor setzen könnte Befehle für die Debug-Builds - nur nicht vergessen, Ihre Freilassung im Release-Modus zu bauen:

#ifdef DEBUG 
Thread.Sleep(10000); 
#endif 
6

Ich würde vorschlagen, den gleichen Ansatz wie bei NT-Dienste in diesem Fall nehmen. Sie starten auch und geben Ihnen normalerweise nicht genug Zeit, um den Debugger für die Start-Routinen anzuhängen.

Details werden hier beschrieben: http://www.debuginfo.com/articles/debugstartup.html

Kurzum Sie einen Registrierungseintrag für die zweite exe hinzu:

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

Ändern Sie c: \ progrs \ msms \ so, dass sie Ihren Einstellungen entsprechen.

Hoffe, dass hilft.

0

Wie wird 1.exe gestartet? Wenn Sie es mit CreateProcess() starten können, können Sie den Prozess in einem angehaltenen Status starten, den Debugger anhängen und dann den neuen Prozess freigeben.

0

Wenn Sie einen anderen Debugger als Visual Studio in Betracht ziehen möchten, kann WinDBG untergeordnete Prozesse automatisch debuggen (nur systemeigener Code).

0

Sie haben nicht erwähnt, welche Sprache Sie verwenden. Wenn Sie jedoch C# oder VB.NET verwenden, können Sie Debug.Break() oder Stop hinzufügen, um die Aufforderung zum Anhängen des Debuggers an den Prozess auszulösen.

Oder wie oben erwähnt, verwenden Sie etwas wie Console.Readline() oder MessageBox.Show(), um den Start des Prozesses anzuhalten, bis Sie den Debugger anfügen können.

Verwandte Themen