3 Stimmen

Haltepunkte in der Kern-.NET-Laufzeit?

Ich habe eine Drittanbieter-Bibliothek, die intern konstruiert und verwendet die SqlConnection-Klasse. Ich kann von der Klasse erben, aber es hat eine Tonne von Überladungen, und bisher habe ich nicht in der Lage gewesen, die richtige zu finden. Was ich möchte, ist auf einen Parameter an die Verbindungszeichenfolge zu tack, die verwendet wird.

Gibt es eine Möglichkeit für mich, einen Haltepunkt in den .NET-Bibliothekskern selbst zu setzen? Insbesondere in den Konstruktoren der Klasse SqlConnection, so dass ich mir den Stack-Trace ansehen und sehen kann, wo sie tatsächlich konstruiert wird?

Gibt es ansonsten eine andere Möglichkeit, dies zu tun?

Genauer gesagt, möchte ich die Name der Anwendung Parameter, so dass unsere Anwendung auf dem Server leichter identifiziert werden kann, wenn man die Verbindungen betrachtet.


Edit : Es scheint, dass ich mehr Hilfe brauche. Ich glaube, ich habe alles aktiviert, was mit der Symbolserverunterstützung zusammenhängt, und ich habe festgestellt, dass sich das von mir konfigurierte Verzeichnis mit Verzeichnissen gefüllt hat, die .pdb-Dateien enthalten. Dennoch kann ich den eigentlichen Quellcode der Klasse SqlConnection nicht verfügbar machen.

Gibt es einen konkreten Leitfaden, wie man dies erfolgreich tun kann?

7voto

aku Punkte 118808

Sie können .NET-Quellcode herunterladen und setzen Sie Haltepunkte direkt im .NET FW-Quellcode.

Sie können verwenden NetMassDownloader um schnell auf .NET-Quellen zuzugreifen.

3voto

Espo Punkte 40386

Nach diesem Artikel können Sie den Quellcode für das .NET-Framework herunterladen und ihn dann mit Visual Studio debuggen:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code

3voto

aku Punkte 118808

Ich hätte fast vergessen zu erwähnen Deblektor - es ist ein Reflector-Plugin, mit dem Sie fast jede .net-Anwendung ohne Quellcode debuggen können :)

3voto

Steve Steiner Punkte 5259

Während Source-Debugging definitiv besser ist, benötigen Sie keine pdbs oder Source für den VS-Debugger, um einen bp auf die gewünschte Funktion zu setzen.

Stellen Sie sicher, dass Sie unter Extras/Optionen/Debugger die Option "Nur mein Code" deaktivieren. Da das Framework nicht "Ihr Code" ist, verhindert der Debugger, dass Sie dort Haltepunkte setzen können.

Als nächstes benötigen Sie den vollständigen Namen der Methode, wie er in den Metadaten erscheint. Dies schließt alle Namespaces ein, in denen sie verschachtelt ist. Ich würde ILDasm oder Reflector empfehlen, wenn Sie den Namen finden müssen.

Im Haltepunkt-Fenster befindet sich in der oberen linken Ecke eine Schaltfläche für das Menü "Neuer bp". Eine der Möglichkeiten ist, einen Haltepunkt auf den Funktionsnamen zu setzen. Wenn das Dialogfeld angezeigt wird, deaktivieren Sie die Option, dass Intellisense den Namen prüft, da Sie kein Projekt haben. Ich hoffe, das hilft.

2voto

Lars Truijens Punkte 41774

Und wenn Sie mit dem von Microsoft gelieferten Quellcode des .Net-Frameworks kein Debugging auf Quellcodeebene durchführen können, können Sie einen anderen Debugger ausprobieren. Wie mdbg oder sogar windbg.

editar

Diese erklärt ausführlich, wie man die freigegebenen Teile des .Net-Frameworks bekommt und wie man Breakpoints setzt. Der NetMassDownloader liefert Ihnen alles (pdb und Source) in einem Download. Aber nicht alle Quelltexte des .Net Frameworks sind verfügbar. Wenn Ihre SqlConnection nicht verfügbar ist, können Sie immer IL-Debugger wie die von mir genannten verwenden. Und vergessen Sie nicht Lutz's Reflector, der Ihnen trotzdem einen Blick auf den Quellcode ermöglicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X