1.exe gibt mir nicht genug Zeit, um die IDE zu starten und 1.exe an den Debugger anzuhängen, um einzubrechen.Wie kann ich einen Prozess (1.exe) debuggen, der unter einem anderen Prozess (2.exe) ausgeführt wird?
Antwort
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.
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
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.
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.
Wenn Sie einen anderen Debugger als Visual Studio in Betracht ziehen möchten, kann WinDBG untergeordnete Prozesse automatisch debuggen (nur systemeigener Code).
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.
- 1. Starten Sie einen Prozess [exe] in Windows
- 2. Wie automatisiere ich einen Prozess mit dem Befehlszeilentool sqlite3.exe?
- 3. Wie führe ich eine Exe vom Windows-Dienst aus und stoppe den Dienst, wenn der exe-Prozess beendet wird?
- 4. wie Wert zwischen zwei Prozess übergeben (. NET C# exe)
- 5. Wie starte ich einen anderen Prozess im XP Kompatibilitätsmodus?
- 6. Wie erhalte ich die Nachricht von einem anderen Prozess?
- 7. Wie kann ich feststellen, ob mein Prozess interaktiv ausgeführt wird?
- 8. Batch-Datei, die nach einem anderen Batch-Datei-Prozess
- 9. VB6-Projekt EXE-Datei wird nicht ausgeführt
- 10. Suchen nach Verzeichnis des laufenden Prozess EXE in
- 11. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird
- 12. DockerToolbox1.11.2.exe Wird nicht unter 64bit Win7 ausgeführt
- 13. Wird der Garbage Collector in einem separaten Prozess ausgeführt?
- 14. Starten Sie einen Prozess als Benutzer aus einem Prozess, der als Administrator ausgeführt wird
- 15. Datei wird von einem anderen Prozess verwendet. Wie kann ich wissen, welcher Prozess?
- 16. Kann ich mit GDB einen laufenden Prozess debuggen?
- 17. Wie kann ich von einer anderen .exe en C++ Befehle an eine .exe senden?
- 18. Datei wird von einem anderen Prozess verwendet
- 19. Wie warten, bis der Prozess in Perl ausgeführt wird, wenn der Prozess nicht untergeordnet ist?
- 20. Anfügen an einen Remote-Prozess zum Debuggen
- 21. In einen anderen Prozess ziehen
- 22. Modale MessageBox auf einem anderen Prozess 'Handle kann Sperrziel Prozess
- 23. Erstellen Sie einen neuen unabhängigen Prozess von einem anderen C-Prozess
- 24. Wie kann ich wissen, dass die exe von der Anwendung ausgeführt wurde
- 25. Wie kann ich einen neuen Prozess mit einem anderen Benutzerkonto unter Windows erstellen?
- 26. Anwendungsfehler - Debug-Exe wird nicht ausgeführt
- 27. Wie kann ich einen Prozess speichern?
- 28. Öffnen der Kamera in einem anderen Prozess
- 29. Aktualisierungssteuertext, während der Prozess ausgeführt wird
- 30. Wie verlangsame ich einen Prozess?