Welche Datei ist pdb?
pdb bezieht sich auf die Datei „Programmdatenbank“, eine Datei, die beim Kompilieren und Verknüpfen von VS generiert wird. In der DPB-Datei werden hauptsächlich die grundlegenden Informationen gespeichert, die VS beim Debuggen des Programms benötigt, einschließlich Quelldateiname, Variablenname, Funktionsname, FPO, entsprechende Zeilennummer usw. Die PDB-Datei wird beim Kompilieren des Projekts generiert und zusammen mit dem entsprechenden Modul generiert.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.
PDB (Program DataBase), der vollständige Name lautet „Program Database“-Datei, eine Datei, die beim Kompilieren und Verknüpfen von VS generiert wird. In der DPB-Datei werden hauptsächlich die grundlegenden Informationen gespeichert, die VS beim Debuggen des Programms benötigt, einschließlich Quelldateiname, Variablenname, Funktionsname, FPO (Frame-Zeiger), entsprechende Zeilennummer usw. Da Debugging-Informationen gespeichert werden, werden PDB-Dateien im Allgemeinen im Debug-Modus generiert.
Die PDB-Datei zeichnet die relevanten Informationen des Quelldateipfads auf, sodass beim Laden der PDB-Datei die relevanten Debugging-Informationen mit dem Quellcode abgeglichen werden können. Dadurch können Sie Funktionsaufrufe, Variablenwerte und andere zugehörige Informationen während des Debuggens in Echtzeit visuell anzeigen. Die im Modul aufgezeichnete PDB-Datei ist ein absoluter Pfad. Solange das Modul auf dem aktuellen Computer geladen ist, findet der Debugger natürlich die entsprechende PDB-Datei anhand der Pfadinformationen im Modul und lädt sie. Ebenso ist der in der PDB-Datei aufgezeichnete Quelldateipfad ebenfalls ein absoluter Pfad. Solange die PDB-Datei also auf dem aktuellen Computer geladen und im entsprechenden Modul debuggt wird, kann sie mit der aufgezeichneten Quelldatei übereinstimmen und dann visuell angezeigt werden entsprechende Informationen.
Wann wird die PDB-Datei generiert?
Die PDB-Datei wird beim Kompilieren des Projekts generiert. Sie wird zusammen mit dem entsprechenden Modul (exe oder dll) generiert. Im Allgemeinen ist uns die Bedeutung von PDB-Dateien möglicherweise nicht bewusst, denn wenn wir nur lokal entwickeln, können wir jederzeit Anpassungen vornehmen. Hier möchte ich zwei Konzepte vorstellen: Private Build und Public Build1. Private Build bezieht sich auf die Kompilierung auf dem Entwicklungscomputer, und Public Build bezieht sich auf die Kompilierung auf dem Computer, der für die Kompilierung verantwortlich ist.
Wie ich oben sagte, gibt es im Allgemeinen kein Problem mit Private Build, da alle notwendigen Dateien zum Debuggen auf dem kompilierten Rechner dort sind, wo sie sein sollten. Die meisten Probleme, die nicht debuggt werden können, treten bei Public Build auf.
Wenn Ihre Anwendung als Produkt veröffentlicht oder verkauft werden muss, müssen Sie besonders darauf achten, die PDB-Datei und die Quelldatei der von Ihnen veröffentlichten Version zu speichern. Hinweis: Sie haben nur eine Chance, die veröffentlichte PDB-Datei zu speichern. Wenn Sie sie verlieren, können Sie sie nicht wiederherstellen. 2 (Die Gründe werden unten erläutert)
Warum ist PDB so wichtig?
Vielleicht Sie Ich werde denken, dass Sie einfach eine PDB-Datei mit genau demselben Quellcode neu kompilieren und sie dann zum Debuggen verwenden. Früher dachte ich so, bis eines Tages ...
Der direkte Grund liegt darin, dass der Header-Teil der von VS generierten Binärdatei die GUID der entsprechenden PDB enthält und die PDB auch eine GUIID enthält Während der Kompilierung werden zwei GUIDs hinzugefügt. Der VS-Debugger vergleicht die beiden GUIDs beim Laden der PDB. Wenn sie inkonsistent sind, können sie nicht verwendet werden.
Natürlich ist der obige Grund nur ein oberflächliches Phänomen. Der Hauptgrund ist, dass die vom Compiler kompilierten Dateien sich von zwei identischen Codes unterscheiden können. Da der Compiler den Code beim Kompilieren optimiert und derselbe Code möglicherweise über viele Optimierungsmethoden verfügt, wählt er die schnellste Generierungsmethode basierend auf der jeweiligen Maschinenumgebung zu diesem Zeitpunkt aus. Daher können die generierten Dateien unterschiedlich sein! Wenn also sogar die generierten Dateien unterschiedlich sind, sind die Adressen, die den Symbolen in der ursprünglichen PDB entsprechen, bedeutungslos.
Wie kann ich die GUID von Binärdateien und PDBs anzeigen?
Verwenden Sie das mit VS gelieferte DUMPBIN-Tool, um die GUID der PDB anzuzeigen, die von der Binärdatei erwartet wird. Die grundlegende Verwendung ist die Datei DUMPBIN /HEADER. Informationen zur spezifischen Verwendung finden Sie in MSDN (http://msdn.microsoft.com/zh-cn/library/c1h23y6c(v=vs.80).aspx).
Um die GUID der PDB anzuzeigen, können Sie das folgende Tool verwenden und die PDB direkt einlesen.
http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P
Suchstrategie für PDB-Dateien
Sehen wir uns zunächst die Testergebnisse an. Anschließend können Sie während des Debuggens die Suchstrategie für das Symbol eines Moduls über den seriellen Modulport von Visual Studio finden. Auf dem Screenshot können wir die Ergebnisse wie folgt sehen:
1 Die Adresse, an der die Datei ausgeführt oder geladen wird
2 in der PE-Datei die Adresse im Header. Wie Sie sehen, ist obj
2.5 Wenn ein Symbolserver konfiguriert ist, sollten Sie nach dem zweiten Schritt zunächst im Cache-Verzeichnis des Symbolservers suchen. Wenn Sie ihn nicht finden können, gehen Sie zum Symbolserver, um ihn zu finden. Wenn es gefunden wird, wird es in das Cache-Verzeichnis heruntergeladen.
3. Der dritte Teil sind die Verzeichnisse für einige in meinem VS festgelegte Symbolabfragen. Da ich Reflector installiert habe, werden diese Verzeichnisse standardmäßig zu meinen Einstellungen hinzugefügt.
4. Windows-Ordner.
Ein interessantes Phänomen hierbei ist, dass die Suchstrategie von VS zuerst symbolexeproject.pdb in einem Verzeichnis findet, dann exeproject.pdb und schließlich project.pdb. Diese Reihenfolge ist etwas überraschend.
Beeinträchtigen PDB-Dateien die Leistung?
Einige Leute denken möglicherweise, dass die Generierung von PDB-Dateien einen gewissen Einfluss auf die Leistung der endgültigen Anwendung haben wird, und sind daher der Meinung, dass PDB-Dateien in der Release-Version nicht generiert werden sollten.
Falsch! Bei .NET-Anwendungen wirkt sich das Generieren von PDB-Dateien nicht auf die Optimierung des Compilers aus, sodass die Leistung der Anwendung überhaupt nicht beeinträchtigt wird. Es wirkt sich nur auf ein DebugableAttribute-Attribut in der generierten Assembly aus. Interessierte können Do PDB Files Affect Performance? lesen.
Empfehlungen für entsprechende Video-Tutorials: „ASP.NET-Tutorial“
Das obige ist der detaillierte Inhalt vonWelche Datei ist pdb?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Wenn Sie ein .NET-Entwickler sind, müssen Sie sich der Bedeutung der Optimierung von Funktionalität und Leistung bei der Bereitstellung hochwertiger Software bewusst sein. Durch den fachgerechten Einsatz der bereitgestellten Ressourcen und die Verkürzung der Ladezeiten der Website schaffen Sie nicht nur ein angenehmes Erlebnis für Ihre Nutzer, sondern senken auch die Infrastrukturkosten.

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

C#.NET -Interviewfragen und Antworten umfassen Grundkenntnisse, Kernkonzepte und erweiterte Nutzung. 1) Grundkenntnisse: C# ist eine von Microsoft entwickelte objektorientierte Sprache und wird hauptsächlich im .NET-Framework verwendet. 2) Kernkonzepte: Delegation und Ereignisse ermöglichen dynamische Bindungsmethoden, und LINQ bietet leistungsstarke Abfragefunktionen. 3) Erweiterte Verwendung: Asynchrone Programmierung verbessert die Reaktionsfähigkeit und Expressionsbäume werden für die dynamische Codekonstruktion verwendet.

Das Interview mit C# Senior Developer erfordert das Mastering von Kernwissen wie asynchrones Programmieren, LINQ und interne Arbeitsprinzipien von .NET -Frameworks. 1. Asynchrones Programmieren vereinfacht die Operationen durch Async und wartet auf die Verbesserung der Anwendungsreaktionsfähigkeit. 2.LinQ betreibt Daten im SQL -Stil und achtet auf die Leistung. 3. Die CLR des Net -Frameworks verwaltet den Speicher, und die Müllsammlung muss mit Vorsicht verwendet werden.

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
