Debuggen einer Release-Version einer DLL (mit PDB-Datei)
-
12-09-2019 - |
Frage
Wenn ich eine DLL (das in Release-Modus gebaut wurde) und die entsprechende PDB-Datei ist es möglich, zu debuggen (Schritt-in) Klassen / Methoden in dieser DLL enthält?
Wenn ja, was ist die erforderlichen Schritte / Konfiguration (zum Beispiel, wo die PDB-Datei setzen)?
Edit:
Wenn hat die PDB-Datei an der gleichen Stelle wie die DLL (in ist / Debug-Verzeichnis einer einfachen Konsole Testanwendung). Ich kann die Symbole sehen, dass für die DLL geladen werden (im Ausgabefenster und auch im Fenster Module), aber immer noch kann ich nicht in die Methoden dieser DLL Schritt.
Könnte dies das Ergebnis der Compiler-Optimierungen (wie von Michael in seiner Antwort beschrieben)?
Lösung 3
Schließlich fand ich, was dazu führen, die Probleme Debuggen einer DLL, die in Release-Konfiguration gebaut wurde:
Zu allererst es funktioniert im Grunde wie erwartet. Das bedeutet, wenn ich eine DLL in Release-Konfiguration gebaut haben und die entsprechende PDB-Datei, dann kann ich die Klassen / Methoden in dieser DLL enthalten debuggen.
Als ich das erste versuchte, versuchte ich leider in Methoden einer Klasse zu dem Schritt, die die DebuggerStepThroughAttribute hat, z:
[System.Diagnostics.DebuggerStepThrough]
public class MyClass {
public void Test() { ... }
}
In diesem Fall ist es natürlich nicht möglich, in das Verfahren zu dem Schritt aus dem Debugger (wie erwartet / beabsichtigt).
So funktioniert alles wie vorgesehen. Vielen Dank für Ihre Antworten.
Andere Tipps
Die PDB ist in der Regel (zumindest für mich) erkannt, wenn es neben der dll ist (wie bei den intellisense XML-Dateien).
Alternativ; Sie einen Haltepunkt müssen, nachdem das Modul geladen ist ...
In der Pause-Punkt, bringen die "Module" Fenster (Strg + D, M - oder Debug-> Windows-> Module) nach oben. Rechtsklick auf Ihrer dll „Load Symbole aus“, „Symbolpfad“ usw.
Ja, können Sie Freigabecode mit einem PDB debuggen. Es gibt einige Fallen jedoch mit Debugging optimierten Code, weitere Informationen hier und
Release Build Debuggen ist in der Regel sehr viel schwieriger, dass eine Debug-Version Debuggen. In der Regel werden Sie ein gewisses Verständnis für x86-Assembler benötigen und Sie werden wahrscheinlich einige Zeit Blick auf die Demontage Fenster verbringen. Dies führt dazu, der einzige Weg zu sein, um herauszufinden, welche Codezeile Sie sind wirklich auf, da in einem Release-Build mit Optimierungen auf dem Compiler signifikantes inlining und Anweisung Umordnung kann tun. Außerdem finde ich den Debugger nicht zu häufig korrekt Werte der Variablen melden. Wenn Sie den Wert einer Variablen wissen müssen, und Sie sind nicht sicher, ob der Debugger korrekt ist, gehen in die Demontage Fenster und finden Sie den Speicherort oder registrieren, es befindet sich in. Die PDB-Dateien können in einem Symbol Server gespeichert werden. Schauen Sie sich ein Symbol Server einrichten für ein gutes Tutorial. Jedes Produkt, das wir auf einem Build-Rechner bauen veröffentlicht die Symbole zu unserem Symbol Server, so dass wir immer debuggen jede Crash-Dumps wir von WinQual erhalten.