Ich habe eine Visual Studio-Erweiterung, die Debugging-Ereignisse einhakt. Wenn der Debugger an einer Codezeile anhält, wird mein IDebugEventCallback2
Callback aufgerufen, und ich kann den Dateinamen und die Zeilennummer herausfinden, wo der Debugger über IDebugThread2::EnumFrameInfo
gestoppt wurde.Erhalten Sie in einer Visual Studio-Erweiterung den Zeilenbereich der Funktion, in der der Debugger gestoppt wird
Ich möchte den Bereich der Quellcodezeilen, die die aktuelle Funktion umfasst, kennen.
Ich hoffe, es ist möglich, die Informationen, die ich brauche von den Debugger-Schnittstellen abzuleiten - der Debugger muss den Zeilenbereich der Funktionen kennen. Wenn das nicht möglich ist, bin ich offen für andere Methoden. In einer idealen Welt würde die Lösung ohne das Projektsystem funktionieren - viele Leute, mich eingeschlossen, verwenden Visual Studio als eigenständigen Debugger, ohne das Projektsystem zu verwenden. (Auch ich kann nicht auf Roslyn verlassen - es muss in den bestehenden Versionen von Visual Studio arbeiten.)
bearbeiten: Carlos Methode der Verwendung von FileCodeModel
funktioniert gut, solange die Datei Teil eines Projekts ist. Ich würde immer noch gerne wissen, ob es eine Methode gibt, die das Projektsystem nicht benötigt.
Danke, aber das funktioniert nicht ganz für mich. 'GetSourceRange()' liefert den Bereich der aktuellen Anweisung, nicht den ganzen Rahmen, und 'Seek()' gibt 0x80004001 "Not implemented" vom C++ - Debugger zurück. (Nicht mein Downvote, BTW.) (Und danke für den Hinweis auf Ihren ausgezeichneten CodeModel Artikel, den ich mir schon angeschaut hatte. :-)) – RichieHindle