Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Programmdatenbankdateien (PDB), auch als Symboldateien bezeichnet, zuordnen Bezeichner und Anweisungen im Quellcode Ihres Projekts den entsprechenden Bezeichnern und Anweisungen in kompilierten Apps. Diese Zuordnungsdateien verknüpfen den Debugger mit Ihrem Quellcode, wodurch das Debuggen ermöglicht wird.
Wenn Sie ein Projekt aus der Visual Studio-IDE mit der standardmäßigen Debugbuildkonfiguration erstellen, erstellt der Compiler die entsprechenden Symboldateien. In diesem Artikel wird beschrieben, wie Sie Symboldateien in der IDE verwalten, z. B.:
- Konfigurieren des Speicherorts von Symboldateien
- Laden von Symbolen beim Debuggen
- Compileroptionen für Symbole
Eine ausführliche Erläuterung der Symboldateien finden Sie unter "Grundlegendes zu Symboldateien und Visual Studio-Symboleinstellungen".
Funktionsweise von Symboldateien
Die PDB-Datei enthält Debug- und Projektstatusinformationen, die die inkrementelle Verknüpfung einer Debugkonfiguration Ihrer App ermöglichen. Der Visual Studio-Debugger verwendet PDB-Dateien , um zwei wichtige Informationen beim Debuggen zu ermitteln:
- Der Name und die Zeilennummer der Quelldatei, die in der Visual Studio-IDE angezeigt werden soll
- Wo in der App für einen Haltepunkt angehalten werden soll
Symboldateien zeigen auch den Speicherort der Quelldateien und optional den Server an, aus dem sie abgerufen werden sollen.
Der Debugger lädt nur PDB-Dateien , die genau mit den PDB-Dateien übereinstimmen, die beim Erstellen einer App erstellt wurden (d. h. die ursprünglichen PDB-Dateien oder Kopien). Diese genaue Duplizierung ist erforderlich, da sich das Layout von Apps ändern kann, auch wenn der Code selbst nicht geändert wird. Weitere Informationen finden Sie unter Warum erfordert Visual Studio, dass Debugger-Symboldateien exakt mit den Binärdateien übereinstimmen, mit denen sie erstellt wurden?
Tipp
Um Code außerhalb des Projektquellcodes zu debuggen, z. B. Windows-Code oder Drittanbietercode, den Ihr Projekt aufruft, müssen Sie den Speicherort der PDB-Dateien des externen Codes (und optional die Quelldateien) angeben, die genau mit den Builds in Ihrer App übereinstimmen müssen.
Wo der Debugger nach Symbolen sucht
Wenn Sie ein Projekt in der Visual Studio-IDE debuggen, lädt der Debugger automatisch Symboldateien, die standardmäßig gefunden werden können.
Anmerkung
Beim Debuggen von verwaltetem Code auf einem Remotegerät müssen sich alle Symboldateien entweder auf dem lokalen Computer oder an einem Speicherort befinden, der in den Debuggeroptionen angegeben ist.
Der Debugger sucht in der angegebenen Reihenfolge nach Symboldateien an den folgenden Speicherorten:
Der Projektordner.
Der Speicherort, der innerhalb der DLL oder der ausführbaren Datei (.exe) angegeben ist.
Wenn Sie eine DLL oder eine .exe Datei auf Ihrem Computer erstellt haben, platziert der Linker standardmäßig den vollständigen Pfad und Dateinamen der zugehörigen PDB-Datei in der DLL- oder .exe-Datei . Der Debugger überprüft, ob die Symboldatei an diesem Speicherort vorhanden ist.
Derselbe Ordner wie die DLL- oder .exe-Datei .
Alle Speicherorte, die in den Debuggeroptionen für Symboldateien angegeben sind. Informationen zum Hinzufügen und Aktivieren von Symbolspeicherorten finden Sie unter Konfigurieren von Symbolspeicherorten und Ladeoptionen.
Ein beliebiger Cacheordner für lokale Symbole.
Angegebene Netzwerk-, Internet- oder lokale Symbolserver und Speicherorte, z. B. die Microsoft-Symbolserver, falls ausgewählt. Visual Studio kann Debugsymboldateien von Symbolservern herunterladen, die das
symsrvProtokoll implementieren. Visual Studio Team Foundation Server und die Debuggingtools für Windows sind zwei Tools, die Symbolserver verwenden können.Symbolserver, die Sie möglicherweise verwenden, umfassen:
Öffentliche Microsoft-Symbolserver: Um einen Absturz zu debuggen, der beim Aufruf einer System-DLL oder der Bibliothek eines Drittanbieters auftritt, werden meist PDB-Systemdateien benötigt. System-PDB-Dateien enthalten Symbole für Windows-DLLs, .exe-Dateien und Gerätetreiber. Sie können Symbole für Windows-Betriebssysteme, MDAC, IIS, ISA und .NET von den öffentlichen Microsoft Symbol-Servern abrufen.
Symbolserver in einem internen Netzwerk oder auf Ihrem lokalen Computer: Ihr Team oder Unternehmen kann Symbolserver für Ihre eigenen Produkte und als Cache für Symbole aus externen Quellen erstellen. Möglicherweise verfügen Sie über einen Symbolserver auf Ihrem eigenen Computer.
Symbolserver von Drittanbietern: Drittanbieter von Windows-Anwendungen und -Bibliotheken können Zugriff auf Symbolserver im Internet bieten.
Warnung
Wenn Sie einen anderen Symbolserver als die öffentlichen Microsoft-Symbolserver verwenden, stellen Sie sicher, dass der Symbolserver und sein Pfad vertrauenswürdig sind. Da Symboldateien beliebigen ausführbaren Code enthalten können, können Sie Sicherheitsbedrohungen ausgesetzt sein.
Konfigurieren des Speicherorts von Symboldateien und Ladeoptionen
Der Debugger überprüft standardmäßig verschiedene Speicherorte auf Symbole. Weitere Informationen finden Sie unter Wo der Debugger nach Symbolen sucht.
Über das Menü "Extras" (oder "Debuggen")>-Optionen können Sie auf die Optionen fürDebuggingsymbole> zugreifen:
- Geben Sie Suchpfade für Symboldateien an, und wählen Sie sie aus.
- Geben Sie Symbolserver für Microsoft-, Windows- oder Drittanbieterkomponenten an.
- Geben Sie Module an, für die der Debugger automatisch Symbole laden soll oder nicht.
- Ändern Sie diese Einstellungen, während Sie aktiv debuggen. Siehe Laden von Symbolen beim Debuggen.
Um Symbolpositionen und Ladeoptionen festzulegen:
Öffnen Sie den Bereich "Extras" (oder "Debuggen")>-Optionen, und erweitern Sie den Abschnitt "Alle Einstellungen">Debuggen>Allgemein>Symbole>Suchorte.
Aktivieren Sie im rechten Bereich das Kontrollkästchen für jeden gewünschten Server: Microsoft-Symbolserver, NuGet.org Symbolserver usw.
Fügen Sie einen neuen Speicherort für den Symbolserver hinzu, indem Sie + Hinzufügen in der Symbolleiste für das Gruppenfeld Speicherorte der Symboldatei (.pdb) auswählen.
Geben Sie die URL (HTTP), die Netzwerkfreigabe oder den lokalen Pfad des Symbolservers oder der Symbolposition im Textfeld ein. Durch Anweisungsvervollständigung wird Ihnen die Bestimmung des richtigen Formats erleichtert.
Anmerkung
Nur der angegebene Ordner wird durchsucht. Sie müssen Einträge für alle Unterordner hinzufügen, die Sie durchsuchen möchten.
Aktivieren Sie das Kontrollkästchen "Aktiviert ", und wählen Sie dann " Speichern" aus.
Fügen Sie einen Azure DevOps-Symbolserverspeicherort hinzu, indem Sie den Link "Neuer Azure DevOps Symbol Server"-Speicherort auswählen.
Wählen Sie im Dialogfeld "Mit Azure DevOps Symbol Server verbinden" einen verfügbaren Symbolserver aus, und wählen Sie dann "Verbinden" aus.
Weitere Informationen finden Sie unter Hinzufügen des Azure Artifacts-Symbolservers.
- Um die Ladereihenfolge für die Symbolpositionen zu ändern, verwenden Sie STRG + NACH-OBEN undSTRG-NACH-UNTEN + , oder wählen Sie "Nach oben" und "Nach unten" aus.
- Um eine URL oder einen Pfad zu bearbeiten, doppelklicken Sie auf den Eintrag, oder markieren Sie den Eintrag, und wählen Sie "Bearbeiten" aus.
- Wenn Sie einen Eintrag entfernen möchten, markieren Sie den Eintrag, und wählen Sie "Entfernen" aus.
Öffnen Sie das Dialogfeld "Extras" (oder "Debugoptionen")>, und erweitern Sie den Abschnitt">".
Aktivieren Sie im Gruppenfeld "Symboldatei-Suchorte (.pdb)" das Kontrollkästchen für jeden gewünschten Server: Microsoft-Symbolserver, NuGet.org-Symbolserver usw.
Fügen Sie einen neuen Symbolserverspeicherort hinzu, indem Sie in der Symbolleiste die Option "Neuer Speicherort" (+) im Gruppenfeld Speicherorte für Symboldatei (.pdb)-Suche auswählen.
Geben Sie die URL (HTTP), die Netzwerkfreigabe oder den lokalen Pfad des Symbolservers oder der Symbolposition im Textfeld ein. Durch Anweisungsvervollständigung wird Ihnen die Bestimmung des richtigen Formats erleichtert.
Anmerkung
Nur der angegebene Ordner wird durchsucht. Sie müssen Einträge für alle Unterordner hinzufügen, die Sie durchsuchen möchten.
Fügen Sie einen neuen Symbolserverspeicherort hinzu, indem Sie in der Symbolleiste für das Gruppenfeld "Speicherorte für Symboldatei(.pdb)" die Option "+" auswählen.
Geben Sie die URL (HTTP), die Netzwerkfreigabe oder den lokalen Pfad des Symbolservers oder der Symbolposition im Textfeld ein. Durch Anweisungsvervollständigung wird Ihnen die Bestimmung des richtigen Formats erleichtert.
Anmerkung
Nur der angegebene Ordner wird durchsucht. Sie müssen Einträge für alle Unterordner hinzufügen, die Sie durchsuchen möchten.
Fügen Sie einen neuen Azure DevOps-Symbolserverspeicherort hinzu, indem Sie auf der Symbolleiste des Gruppenfelds den
Neuen Azure DevOps-Symbolserverspeicherort auswählen.Wählen Sie im Dialogfeld "Mit Azure DevOps Symbol Server verbinden" einen verfügbaren Symbolserver aus, und wählen Sie dann "Verbinden" aus.
Weitere Informationen finden Sie unter Hinzufügen des Azure Artifacts-Symbolservers.
- Um die Ladereihenfolge für die Symbolpositionen zu ändern, verwenden Sie STRG + Pfeil nach oben und STRG + Pfeil nach unten, oder wählen Sie die Aktionen Nach oben und Unten aus.
- Um eine URL oder einen Pfad zu bearbeiten, doppelklicken Sie auf den Eintrag, oder markieren Sie den Eintrag, und drücken Sie F2.
- Wenn Sie einen Eintrag entfernen möchten, markieren Sie ihn, und wählen Sie "Speicherort entfernen " (-).
(Optional) Verbessern Sie die Leistung beim Laden von Symbolen, indem Sie einen lokalen Ordnerpfad für kopierte Symbole angeben.
Geben Sie für die Cachesymbole in dieser Verzeichnisoption einen lokalen Ordnerpfad ein, in den Symbolserver Symbole kopieren können.
Anmerkung
Platzieren Sie den lokalen Symbolcache nicht in einem geschützten Ordner, z. B. C:\Windows oder einem Unterordner. Verwenden Sie stattdessen einen Ordner mit Lese- und Schreibzugriff.
Wenn die _NT_SYMBOL_PATH Umgebungsvariable festgelegt ist, überschreibt der Wert die Cachesymbole in diesem Verzeichniswert .
Geben Sie die Module an, die beim Start vom Debugger aus den Speicherorten der Symboldatei (.pdb) geladen werden sollen.
Wechseln Sie zum Abschnitt "Alle Einstellungen>Debuggen>Allgemein>Symbole>Suchen und Laden".
Verwenden Sie die Dropdownliste, um den Wert der Option " Automatische Symbolsuche " festzulegen:
Wählen Sie automatisch aus, nach welchen Modulsymbolen gesucht werden soll (empfohlen): Ermöglichen Sie Visual Studio, zu entscheiden, nach welchen Symbolen gesucht und geladen werden soll. Standardmäßig lädt Visual Studio automatisch Symbole, die von Ihrer geöffneten Lösung erstellt wurden, und lädt alle anderen Symbole, die zum Ausführen allgemeiner Debuggingvorgänge erforderlich sind. Mit dieser Option wird die Anzahl der Dateien reduziert, die von Visual Studio gesucht und geladen werden müssen, wodurch die Debuggerleistung verbessert wird. Sie können erzwingen, dass andere Symbole geladen werden, indem Sie die Liste der enthaltenen Module erstellen.
Suchen Sie nach allen Modulsymbolen, es sei denn, sie sind ausgeschlossen: Erzwingen Sie, dass Visual Studio alle Symbole in Ihrem debuggierten Prozess lädt. Diese Option wird nicht empfohlen, da sie die Debugerfahrung verlangsamen kann. Sie können erzwingen, dass Visual Studio bestimmte Symbole ignoriert, indem Sie die Liste der ausgeschlossenen Module erstellen.
Im Abschnitt
„Debuggingsymbole“ wählen Sie den Wert der Option „Symbolsuche“ aus:
Wählen Sie automatisch aus, nach welchen Modulsymbolen gesucht werden soll (empfohlen): Ermöglichen Sie Visual Studio, zu entscheiden, nach welchen Symbolen gesucht und geladen werden soll. Standardmäßig lädt Visual Studio automatisch Symbole, die von Ihrer geöffneten Lösung erstellt wurden, und lädt alle anderen Symbole, die zum Ausführen allgemeiner Debuggingvorgänge erforderlich sind. Mit dieser Option wird die Anzahl der Dateien reduziert, die von Visual Studio gesucht und geladen werden müssen, wodurch die Debuggerleistung verbessert wird. Sie können erzwingen, dass andere Symbole geladen werden, indem Sie die Liste der enthaltenen Module erstellen.
Suchen Sie nach allen Modulsymbolen, es sei denn, sie sind ausgeschlossen: Erzwingen Sie, dass Visual Studio alle Symbole in Ihrem debuggierten Prozess lädt. Diese Option wird nicht empfohlen, da sie die Debugerfahrung verlangsamen kann. Sie können erzwingen, dass Visual Studio bestimmte Symbole ignoriert, indem Sie die Liste der ausgeschlossenen Module erstellen.
Laden Sie alle Module, außer die ausdrücklich ausgeschlossenen (Standard): Laden Sie alle Symbole für alle Module am angegebenen Speicherort der Symboldateien, außer für die Module, die Sie spezifisch ausschließen.
Um bestimmte Module auszuschließen, wählen Sie " Ausgeschlossene Module angeben" aus. Wählen Sie "Hinzufügen " (+) aus, geben Sie die Namen der auszuschließenden Module ein, und wählen Sie "OK" aus.
Nur angegebene Module laden: Laden Sie nur die Module, die Sie an den Speicherorten der Symboldateien angegeben haben.
Um die Module zu identifizieren, wählen Sie "Eingeschlossene Module angeben" aus. Wählen Sie "Hinzufügen " (+) aus, geben Sie die Namen der einzuschließden Module ein, und wählen Sie dann "OK" aus. Die Symboldateien für andere Module werden nicht geladen.
- Um Ihre Einstellungen anzuwenden, wählen Sie "OK" aus.
Angeben von Modulfiltern
Sowohl die Option "Automatisch auswählen" als auch " Suchen" für alle Optionen ermöglichen es Ihnen, zu steuern, nach welchen Symbolen während des Debuggens gesucht wird.
Geben Sie für die Option "Automatisch auswählen", welche Modulsymbole gesucht werden sollen , die Suchliste an, indem Sie die Liste "Eingeschlossene Module " erstellen.
Wählen Sie + Hinzufügen in der Listensymbolleiste aus.
Geben Sie im Dialogfeld " Element hinzufügen " den Modulnamen ein, aktivieren Sie das Kontrollkästchen "Aktiviert ", und wählen Sie dann " Speichern" aus.
Fügen Sie der Liste nach Bedarf weitere Elemente hinzu.
Geben Sie die Suchliste an, indem Sie den Link "Modulfilter angeben " auswählen:
Für die Option „Automatische Auswahl, welche Modulsymbole durchsucht werden sollen“ wird das Dialogfeld „Einstellungen für die automatische Symbolsuche“ geöffnet:
Um die Filterliste "Module " zu erstellen, wählen Sie "Neues Modul " (+), geben Sie die neuen Module ein, und wählen Sie dann "OK" aus.
Modulfilter unterstützen einfache Wildcard-Matches. Das Sternchen * entspricht einer beliebigen Gruppe von Zeichen. Beispielsweise gleicht *myproduct* Dateien wie myproduct.utilities.dll und entrypoint.myproduct.exeunter anderem ab.
Sie können andere Optionen konfigurieren, um Ihre Benutzeroberfläche anzupassen:
Symbole werden immer neben Modulen geladen: Visual Studio lädt PDB-Dateien , die im Dateisystem mit den entsprechenden .dll - oder .exe-Dateien gespeichert sind. Dieser Ansatz kann hilfreich sein, z. B. beim Versuch, eine bereitgestellte Web-App zu debuggen.
automatisches Laden zusätzlicher Symbole bei Bedarf: Visual Studio sucht nach Symbolen, um allgemeine Debugaktionen auszuführen, z. B. das schrittweise Ausführen, auch wenn sich das Modul, zu dem Sie wechseln, nicht in Ihrem Projekt oder im Modulfilter befindet. Die Art und Weise, wie die Suche bestimmt wird, kann von Ihren Just My Code-Einstellungen beeinflusst werden.
Für die Option Suche nach allen Modulsymbolen, sofern nicht ausgeschlossen, spezifizieren Sie die Suchliste, indem Sie die Liste der ausgeschlossenen Module erstellen.
Wählen Sie + Hinzufügen in der Listensymbolleiste aus.
Geben Sie im Dialogfeld " Element hinzufügen " den Modulnamen ein, aktivieren Sie das Kontrollkästchen "Aktiviert ", und wählen Sie dann " Speichern" aus.
Fügen Sie der Liste nach Bedarf weitere Elemente hinzu.
Für die Option Suche nach allen Modulsymbolen, sofern nicht ausgeschlossen öffnet sich das Dialogfeld Symbolausschluss-Einstellungen.
Um die Filterliste "Module " zu erstellen, wählen Sie "Neues Modul " (+), geben Sie die neuen Module ein, und wählen Sie dann "OK" aus.
In diesem Dialogfeld können Sie auswählen, für welche Module Keine Symbole von Visual Studio geladen werden sollen. In diesem Szenario versucht Visual Studio, Symbole für jedes Modul in Ihrem debuggierten Prozess (einschließlich Module von Nicht-Microsoft-Parteien) zu laden, es sei denn, Sie fügen einen übereinstimmenden Filter hinzu, um sie auszuschließen. Die einzige andere Möglichkeit, dieses Verhalten zu ändern, ist Ihre Einstellungen für Just My Code.
Weitere Symboloptionen für das Debuggen
Sie können weitere Debugsymboloptionen im Menü "Extras" (oder "Debugoptionen") > auswählen.
Die folgenden Einstellungen sind im Abschnitt "Alle Einstellungen>debuggen>allgemein " verfügbar.
Die folgenden Einstellungen sind im Abschnitt "Debugging>General " verfügbar.
Laden von DLL-Exporten (nur native): Lädt Exporttabellen von DLLs für C/C++. Ausführliche Informationen finden Sie unter DLL-Exporttabellen. Das Lesen von DLL-Exportinformationen erfordert einen gewissen Aufwand, sodass das Laden von Exporttabellen standardmäßig deaktiviert ist. Sie können auch
dumpbin /exportsin einer C/C++-Build-Befehlszeile verwenden.Aktivieren Sie das Debuggen auf Adressebene , und zeigen Sie die Demontage an, wenn die Quelle nicht verfügbar ist: Zeigt immer die Demontage an, wenn Quell- oder Symboldateien nicht gefunden werden.
Aktivieren sie die Quellserverunterstützung: Verwendet den Quellserver, um eine App zu debuggen, wenn kein Quellcode auf dem lokalen Computer vorhanden ist oder die PDB-Datei nicht mit dem Quellcode übereinstimmt. Der Quellserver akzeptiert Anforderungen für Dateien und gibt die tatsächlichen Dateien aus der Quellcodeverwaltung zurück. Der Quellserver wird mit einer DLL namens srcsrv.dll ausgeführt, um die PDB-Datei der App zu lesen. Die PDB-Datei enthält Zeiger auf das Quellcode-Repository und Befehle, die zum Abrufen von Quellcode aus dem Repository verwendet werden.
Sie können die Befehle einschränken, die srcsrv.dll aus der PDB-Datei der App ausführen können, indem Sie die zulässigen Befehle in einer Datei mit dem Namen srcsrv.iniauflisten. Platzieren Sie die srcsrv.ini Datei im selben Ordner wie srcsrv.dll und devenv.exe.
Wichtig
Arbiträre Befehle können in die PDB-Datei einer App eingebettet werden. Stellen Sie daher sicher, dass Sie nur die Befehle, die Sie ausführen möchten, in eine srcsrv.ini-Datei speichern. Jeder Versuch, einen Befehl auszuführen, der sich nicht in der srcsvr.ini befindet, löst ein Bestätigungsdialogfeld aus. Weitere Informationen finden Sie unter Sicherheitswarnung: Debugger muss nicht vertrauenswürdigen Befehl ausführen.
Es wird keine Überprüfung für Befehlsparameter ausgeführt. Achten Sie daher bei vertrauenswürdigen Befehlen darauf. Wenn Sie z. B. cmd.exe in Ihrem srcsrv.iniaufgeführt haben, kann ein böswilliger Benutzer Parameter für cmd.exe angeben, die es gefährlich machen können.
Wählen Sie alle gewünschten unterstützenden Einstellungen aus. Beachten Sie, dass die Optionen Zulassen, dass der Quellserver für teilweise vertrauenswürdige Assemblys verwendet wird (nur verwaltet) und Immer nicht vertrauenswürdige Quellserverbefehle ausführen, ohne dass eine Eingabeaufforderung erfolgt, die Sicherheitsrisiken erhöhen können.
Compilersymboloptionen
Wenn Sie ein Projekt aus der Visual Studio-IDE mit der standardmäßigen Debugbuildkonfiguration erstellen, erstellen die C++- und verwalteten Compiler die entsprechenden Symboldateien für Ihren Code. Sie können auch Compileroptionen im Code festlegen.
Informationen zum Festlegen der Compileroptionen für Ihre Buildkonfigurationen in Visual Studio finden Sie unter Festlegen von Debug- und Releasekonfigurationen.
.NET-Optionen
Erstellen Sie mit /debug eine .pdb-Datei. Sie können Anwendungen mit /debug:full oder /debug:pdbonly erstellen. Beim Erstellen mit /debug:full wird debugfähiger Code generiert. Beim Erstellen mit /debug:pdbonly werden PDB-Dateien generiert, aber es wird nicht das DebuggableAttribute erzeugt, das den JIT-Compiler darüber informiert, dass Debuginformationen verfügbar sind. Verwenden Sie "/debug:pdbonly ", wenn Sie PDB-Dateien für einen Releasebuild generieren möchten, den Sie nicht debuggen möchten. Weitere Informationen finden Sie unter /debug (C#-Compileroptionen) oder /debug (Visual Basic).
C/C++-Optionen
VC<x>.pdb und <project>.pdb Dateien
Eine PDB-Datei für C/C++ wird erstellt, wenn Sie /ZI oder /Zi für den Build verwenden. In Visual C++ benennt die Option "/Fd " die PDB-Datei , die der Compiler erstellt. Wenn Sie ein Projekt in Visual Studio mithilfe der IDE erstellen, wird die Option "/Fd" so festgelegt, dass eine PDB-Datei mit dem Namen <"project.pdb>" erstellt wird.
Wenn Sie Ihre C/C++-Anwendung mit einer Makefile erstellen und /ZI oder /Zi ohne Verwendung von /Fd angeben, um einen Dateinamen anzugeben, erstellt der Compiler zwei PDB-Dateien :
VC<x.pdb>, wobei <x> die Version des Microsoft C++-Compilers darstellt, z. B. VC11.pdb
Die DATEI VC<x.pdb> speichert alle Debuginformationen für die einzelnen Objektdateien und befindet sich im selben Verzeichnis wie die Projekt-Makefile. Jedes Mal, wenn eine Objektdatei erstellt wird, führt der C/C++-Compiler Debuginformationen in VC<x.pdb> zusammen. Selbst wenn jede Quelldatei allgemeine Headerdateien wie <"windows.h>" enthält, werden die Typedefs aus diesen Headern nur einmal und nicht in jeder Objektdatei gespeichert. Die eingefügten Informationen enthalten Typinformationen, enthalten jedoch keine Symbolinformationen, z. B. Funktionsdefinitionen.
<project.pdb>
Die <Datei project.pdb> speichert alle Debuginformationen für die .exe-Datei des Projekts und befindet sich im Unterverzeichnis \debug. Die <Datei project.pdb> enthält vollständige Debuginformationen, einschließlich Funktionsprototypen, nicht nur die Typinformationen in VC<x.pdb>.
Sowohl die VC<x.pdb>- als <auch die Project.pdb-Dateien> ermöglichen inkrementelle Updates. Der Linker bettet den Pfad zu den PDB-Dateien in die erstellte EXE- bzw. DLL-Datei ein.
-
Verwenden Sie
dumpbin /exports, um die in der Exporttabelle einer DLL verfügbaren Symbole anzuzeigen. Symbolische Informationen aus DLL-Exporttabellen können nützlich sein, um mit Windows-Nachrichten, Windows-Prozeduren (WindowProcs), COM-Objekten, Marshalling oder dll-Dateien zu arbeiten, für die Sie keine Symbole haben. Symbole sind für eine beliebige 32-Bit-System-DLL verfügbar. Die Aufrufe werden in der Aufrufreihenfolge aufgelistet, wobei die aktuelle Funktion (die am tiefsten geschachtelte) oben steht.Durch Lesen der
dumpbin /exportsAusgabe können Sie die genauen Funktionsnamen sehen, einschließlich nichtalphanumerischer Zeichen. Das Anzeigen exakter Funktionsnamen ist nützlich, um einen Haltepunkt für eine Funktion festzulegen, da Funktionsnamen an anderer Stelle im Debugger abgeschnitten werden können. Weitere Informationen finden Sie unter dumpbin /exports.
Webanwendungen
Legen Sie die web.config Datei Ihrer ASP.NET Anwendung auf den Debugmodus fest. Der Debugmodus bewirkt, dass ASP.NET Symbole für dynamisch generierte Dateien generiert und dem Debugger das Anfügen an die ASP.NET Anwendung ermöglicht. Visual Studio legt dies automatisch fest, wenn Sie mit dem Debuggen beginnen, wenn Sie Ihr Projekt aus der Webprojektvorlage erstellt haben.
Laden von Symbolen beim Debuggen
Sie können die Module,Aufrufstapel, Lokal,Autos oder ein beliebiges Überwachungsfenster verwenden, um Symbole zu laden oder Symboloptionen beim Debuggen zu ändern. Weitere Informationen erhalten Sie unter Informieren Sie sich darüber, wie der Debugger an Ihre App angefügt wird.
Arbeiten mit Symbolen im Fenster "Module"
Während des Debuggens zeigt das Modulfenster die Codemodule an, die der Debugger als Benutzercode oder "Mein Code" behandelt, und deren Symbolladestatus. Sie können auch den Symbolstatus überwachen, Symbole laden und Symboloptionen im Module-Fenster ändern.
So überwachen oder ändern Sie beim Debuggen Symbolpositionen oder -optionen:
Um das Modulfenster beim Debuggen zu öffnen, wählen Sie Debug>Windows>Module aus (oder drücken Sie STRG + ALT + U).
Klicken Sie im Fenster "Module " mit der rechten Maustaste auf die Kopfzeilen "Symbolstatus " oder " Symboldatei" oder auf ein beliebiges Modul.
Wählen Sie im Kontextmenü eine der folgenden Optionen aus:
Auswahlmöglichkeit Beschreibung Symbole laden Wird für Module mit übersprungenen, nicht gefundenen oder nicht geladenen Symbolen angezeigt. Versucht, Symbole von Speicherorten zu laden, die im Bereich ">Optionen" unter den Abschnitten "Alle Einstellungen>Debuggen>Symbole>Suchen und Laden“ oder "Speicherorte suchen" angegeben sind. Wenn die Symboldatei nicht gefunden oder nicht geladen wurde, startet der Datei-Explorer , damit Sie einen neuen Speicherort für die Suche angeben können. Symbolladeinformationen Zeigt den Speicherort einer geladenen Symboldatei oder die Speicherorte an, die durchsucht wurden, wenn der Debugger die Datei nicht finden kann. Symboleinstellungen Öffnet den Bereich "Extras>Optionen" im Abschnitt "Alle Einstellungen>Debugging>Symbole>Suchorte", in dem Sie Symbolspeicherorte bearbeiten und hinzufügen können. Immer automatisch laden Fügt die ausgewählte Symboldatei der Liste der Dateien hinzu, die automatisch vom Debugger geladen werden. Quellcode zu Symboldatei dekompilieren Für .NET-Code können Sie diese Option auswählen und dann die Anweisungen unter Generieren und Einbetten von Quellen für eine Assembly befolgen. Auswahlmöglichkeit Beschreibung Symbole laden Wird für Module mit übersprungenen, nicht gefundenen oder nicht geladenen Symbolen angezeigt. Versucht, Symbole von Orten zu laden, die im Dialogfeld ">" im Abschnitt ">" angegeben sind. Wenn die Symboldatei nicht gefunden oder nicht geladen wurde, startet der Datei-Explorer , damit Sie einen neuen Speicherort für die Suche angeben können. Symbolladeinformationen Zeigt den Speicherort einer geladenen Symboldatei oder die Speicherorte an, die durchsucht wurden, wenn der Debugger die Datei nicht finden kann. Symboleinstellungen Öffnet das Dialogfeld "Toolsoptionen>" im Abschnitt "Debuggingsymbole>", in dem Sie Symbolspeicherorte bearbeiten und hinzufügen können. Immer automatisch laden Fügt die ausgewählte Symboldatei der Liste der Dateien hinzu, die automatisch vom Debugger geladen werden. Quellcode zu Symboldatei dekompilieren Für .NET-Code können Sie diese Option auswählen und dann die Anweisungen unter Generieren und Einbetten von Quellen für eine Assembly befolgen.
Verwenden der Seite „Keine Symbole geladen/Keine Quelle geladen“
Es gibt mehrere Möglichkeiten, wie der Debugger in Code eindringen kann, der keine Symbol- oder Quelldateien verfügbar hat:
- Einzelschritt.
- Unterbrechen im Code von einem Breakpoint oder einer Ausnahme.
- Wechseln Sie zu einem anderen Thread.
- Ändern Sie den Stapelrahmen, indem Sie im Fenster "Anrufstapel " auf einen Frame doppelklicken.
In diesem Fall zeigt der Debugger die Seiten "Keine Geladene Symbole" oder "Keine Quelle geladen " an, um die erforderlichen Symbole oder Quellen zu finden und zu laden.
So verwenden Sie die Seite „Keine Symbole geladen“, um fehlende Symbole zu suchen und zu laden:
Um den Suchpfad zu ändern, wählen Sie einen nicht ausgewählten Pfad, Neuer Pfad oder Neuer VSTS-Pfad aus und geben Sie einen neuen Pfad ein oder wählen Sie diesen aus. Wählen Sie "Laden" aus, um die Pfade erneut zu durchsuchen, und laden Sie die Symboldatei, wenn sie gefunden wird.
Wählen Sie Nach <Name_der_ausführbaren_Datei> suchen> aus, um alle Symboloptionen zu überschreiben und einen Wiederholungsversuch für die Suchpfade auszuführen. Die Symboldatei wird geladen, wenn sie gefunden wird, oder der Datei-Explorer wird geöffnet, sodass Sie die Symboldatei manuell auswählen können.
- Um die Seite mit den Symboleinstellungen zu öffnen und das Verhalten zu konfigurieren, wählen Sie "Symboleinstellungen ändern" aus (oder öffnen Sie den Bereich "Extras>Optionen", und navigieren Sie zum Abschnitt "Alle Einstellungen>Debuggen>Symbole>Suchen und Laden" oder "Speicherorte suchen").
- Wenn Sie die Seite mit den Symboleinstellungen öffnen möchten, um das Verhalten zu konfigurieren, wählen Sie "Symboleinstellungen ändern" aus (oder öffnen Sie das Dialogfeld "Extras>", und wechseln Sie zum Abschnitt ">").
(Erweitert) Wenn Sie die Demontage in einem neuen Fenster einmal anzeigen möchten, wählen Sie die Ansichtsdemontage aus, oder wählen Sie das Dialogfeld "Optionen" aus, um die Option so festzulegen, dass immer die Demontage angezeigt wird, wenn Quell- oder Symboldateien nicht gefunden werden. Weitere Informationen finden Sie unter Anzeigen von Disassemblycode.
Um die durchsuchten Speicherorte und das Ergebnis anzuzeigen, erweitern Sie Symbolladeinformationen.
Bei C#-Code können Sie auch die Dekompilierung des Quellcodes von den Seiten „Keine Symbole geladen“ oder „Keine Quelle geladen“ auswählen.
Wenn der Debugger die PDB-Datei findet, nachdem Sie eine der Optionen ausgeführt haben und die Quelldatei mithilfe der Informationen in der PDB-Datei abrufen können, wird die Quelle angezeigt. Andernfalls wird eine Seite Keine Quelle geladen angezeigt, die das Problem beschreibt und Links zu Aktionen bereitstellt, die das Problem möglicherweise beheben.
So fügen Sie einer Lösung Quelldateisuchpfade hinzu:
Sie können die Speicherorte angeben, an die der Debugger nach Quelldateien sucht, und bestimmte Dateien aus der Suche ausschließen.
Wählen Sie die Lösung im Projektmappen-Explorer aus, und wählen Sie dann das Eigenschaften-Symbol aus, drücken Sie die Alt++Eingabetaste, oder klicken Sie mit der rechten Maustaste, und wählen Sie Eigenschaften aus.
Wählen Sie Quelldateien debuggen aus.
Geben Sie unter Verzeichnisse mit Quellcode Quellcodespeicherorte für die Suche ein, oder wählen Sie diese aus. Verwenden Sie das Symbol "Neue Linie", um weitere Positionen, die Nach-OBEN- und NACH-UNTEN-Symbole hinzuzufügen, um sie neu anzuordnen, oder das X-Symbol, um sie zu löschen.
Anmerkung
Der Debugger durchsucht nur das angegebene Verzeichnis. Sie müssen Einträge für alle Unterverzeichnisse hinzufügen, die Sie durchsuchen möchten.
Geben Sie unter „Diese Quelldateien nicht suchen“ die Namen der Quelldateien ein, die von der Suche ausgeschlossen werden sollen.
Wählen Sie OK oder Anwenden aus.