2017-10-26 10 views
0

Kann mir jemand detaillierte Informationen zum Schreiben einer benutzerdefinierten Debug-Engine für Visual Studio speziell für einen Interpreter geben?Benutzerdefinierte Debug-Engine für Interpreter

Ich habe ein benutzerdefiniertes XML-Dokument, das einen Workflow beschreibt, und ich habe einen Runner (Interpreter) dafür, der jedes Element der XML-Datei zur Laufzeit interpretiert und ausführt (C#).

Jetzt möchte ich eine benutzerdefinierte Debug-Engine erstellen, die in der Lage ist, über diese XML-Elemente zu treten.

Ich habe einige grundlegende Beispiele dafür, wie zu schreiben, eine solche Debug Engine gefunden, aber ich habe eine große Frage:

Wie mit dem Debug Engine die Common Language Runtime (Debuggee) kommunizieren? Zum Beispiel sendet die Debug-Engine einen "Step over" -Befehl. Aber was brauche ich, um dieses Event in meiner App zu erhalten? Woher weiß ich, wann ich den nächsten Schritt ausführen soll? Ich bin mir sicher, dass ich auch die Debug-Engine informieren muss, wenn die Aktion abgeschlossen wurde, aber wie?

Hat jemand von euch etwas Ähnliches getan und kann mir einige Proben liefern?

Antwort

0

Sie können auf harten Modus vs Soft-Modus Debuggen etwas mehr Forschung tun:

https://blogs.msdn.microsoft.com/jmstall/2005/02/09/hardmode-vs-softmode/

Ich glaube, Sie einen Soft-Modus-Debugger implementieren diese Arbeit zu bekommen. Das bedeutet, dass ein Thread (oder Threads) in Ihrem Interpreter ausgeführt wird, mit dem Sie über Ihre Debug-Engine kommunizieren.

Hier ist ein weiterer Link, der beschreibt, wie eine Debug Engine für Visual Studio schreiben

https://code.msdn.microsoft.com/windowsdesktop/Visual-Studio-Debug-Engine-c2e21c0e

Das Beispiel wenn ein harter Modus Debugger ist. Es gibt kein Beispiel für einen Soft-Modus für VS, den ich kenne.

+0

Thx, der erste Link hat mir sehr geholfen. Auch dieses Repo hilft: https://github.com/techl/MonoRemoteDebugger –