c# force debug-Modus programmgesteuert
Nevermind, warum man dies möglicherweise tun möchten, ich bin nur neugierig zu wissen, wenn es getan werden kann.
Hier ist mein code, der nicht funktioniert:
if (!Debugger.IsAttached)
{
try
{
Debugger.Launch();
while (!Debugger.IsAttached)
{
Thread.Sleep(1000);
}
}
catch (System.Security.SecurityException e)
{
Console.WriteLine("exception " + e.Message);
}
}
Im Grunde war ich neugierig zu wissen, wie die Debugger.Launch()
Methode.
- Sie Frage ist nicht klar. Können Sie genauer beschreiben, was Sie suchen, zu tun?
- Mein Ziel war es, um den debugger zu starten programmgesteuert, D. H. zum befestigen an den Prozess, der ausgeführt wird über den Prozess selbst.
- Dies funktionierte wirklich gut für mich. Ich war nicht in der Lage, um einen debugger anfügen an einen Prozess, sobald er gestartet wird (auch unter Verwendung von "gflags", vsjitdebugger, und windbg). Nicht nur startete eine VS-debugger für mich, sondern auch löste eine sofortige Haltepunkt. Es fand auch PDB-Dateien, die aus welchem Grund auch immer nicht gefunden werden konnte, wenn Sie manuell anfügen an einen Prozess (auch mit dem richtigen Pfade setzen). Danke!!!
- froh, dass es geholfen hat. Als follow-up zu diesem, basiert auf, wie dies umgesetzt wird: referencesource.microsoft.com/#mscorlib/system/diagnostics/... , ich denke, es war unnötig von mir, bitte für den Debugger.IsAttached, da es bereits überprüft, dass unter der Haube. So ein Debugger.Start () - Aufruf sollte genug sein, in der Nähe der entrypoint des Programms und die nachfolgenden Haltepunkte sollten nur Debugger.Pause().
Du musst angemeldet sein, um einen Kommentar abzugeben.
Debugger.Start startet einen debugger oder nichts tun ist eine ist bereits angebracht. Ich glaube, Es ist nicht ein Haltepunkt. Debugger.Pause() wird tatsächlich brechen.
Debugger Aufrufen.Start() tun können verschiedene Dinge, je nach Maschine, zum Beispiel, wenn Visual Studio installiert ist oder nicht, etc.
Siehe auch eine entsprechende tech-Artikel: Gewusst wie: Starten Sie den Debugger Automatisch
Es wird gestartet und fügt einen debugger an den Prozess.
Für Sie sicher, verwenden Sie es nicht in die Produktion . Ich denke, dass der mögliche nutzen
kann in der lokalen Maschine an, wenn Fehler aufgetreten, und Sie möchten automatisch ausführen debug.
Ich denke, Sie sind Missverständnis, was
Debugger.Launch()
tut. Es funktioniert wie ein hartcodierten Haltepunkt.Wenn Ihr Programm trifft
Debugger.Launch()
mit der Just-In-Time-Debuggen Fenster zeigen (vorausgesetzt, Sie haben Visual Studio auf dem Rechner installiert. An diesem Punkt wird Ihr Programm beendet ist - es muss nicht immer läuft.Wenn Sie eine Instanz von VS ist, wird es gestartet, gestoppt, auf der Linie mit
Debugger.Launch()
, als wenn Sie traf es einen Haltepunkt.Also es gibt wirklich keinen Grund für die while () - Schleife. Sie könnten einfach anrufen
Debugger.Launch()
Wann immer Sie wollen, beenden Sie das Programm, um uns etwas anzuschauen.Aber die Nützlichkeit von
Debugger.Launch()
ist fraglich. Sie können viel mehr einfach verwenden Haltepunkten mit Haltepunkten es besteht keine Gefahr, versehentlich verlassen es in das fertige Produkt.