Map-Debug-Datei
Nach oben zu Dateitypen - Index
Map-Dateien sind reine Textdateien, die Informationen über die globalen Symbole Ihres Programms, Quelldatei und Quellzeilennummern enthalten, die beim Debuggen hilfreich sind. Wenn Ihre Anwendung beispielsweise abstürzt (z. B. wegen einer Zugriffsverletzung), können Sie mit der Ergebnisadresse das Modul (Methode) ermitteln, in dem die Anwendung abgestürzt ist.
Inhaltsverzeichnis
Inhalt und Format der Map-Debug-Datei
RAD Studio erzeugt standardmäßig eine Map-Datei mit den folgenden allgemeinen Segmentinformationen:
- Eine Liste der Segmente mit ihren Namen
- Die Programmstartadresse und das Offset
- Die Klasse:
- CODE (enthält ausführbare Anweisungen)
- DATA (enthält die globalen und statischen Variablen, die vom Programmierer initialisiert wurden)
- BSS (enthält statisch zugewiesene Variablen) oder
- TLS (Thread-lokaler Speicher)
- Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden
//hello.cpp
#include<iostream>
#include<string>
int main(int, char**)
{
std::string s("hello world");
std::cout<<s;
return 0;
}
Die für das vorherige Codebeispiel erstellte Map-Datei sieht beispielsweise nach dem Linken der .cpp-Datei folgendermaßen aus:
Start Length Name Class 0001:00401000 0000214D4H _TEXT CODE 0002:00423000 0000059B8H _DATA DATA 0003:004289B8 000002F24H _BSS BSS 0004:00000000 00000009CH _TLS TLS
Bei einem Aufruf von BCC32.EXE mit der Option -M enthält die Map-Datei außer den Standardinformationen die folgenden beiden Abschnitte:
Address Publics by Name 0002:000024C4 @std@%basic_filebuf$b19std@%char_traits$b%%@3 0002:000010E8 @std@%basic_filebuf$c19std@%char_traits$c%%@3 0002:00002450 @std@%basic_ios$b19std@%char_traits$b%%@3 . . . Address Publics by Value 0001:000000E4 _main 0001:00000730 std::allocator<char>::allocator<char>() . . .
Der Abschnitt Address Publics by Name enthält Paare von Startadressen (Segment:Offset) und Methoden, Variablen oder andere Symbole. Diese Paare sind nach Symbolnamen sortiert. Der Abschnitt Address Publics by Value enthält dieselben Paare wie der Abschnitt Address Publics by Name, aber nach Werten sortiert.
Generieren von Map-Debug-Dateien
Wenn Sie ein Delphi-Projekt erzeugen, generiert RAD Studio eine Map-Debug-Datei, sofern Ihr Projekt eine der folgenden Bedingungen erfüllt:
- Sie erzeugen Ihr Projekt für 32-Bit-Windows, 64-Bit-Windows, macOS ARM 64 Bit, macOS 64 Bit, 32-Bit-Android oder 64-Bit-Android, und der Wert der Option Map-Datei in Projekt > Optionen > Delphi-Compiler > Linken lautet "Detailliert".
- Sie erzeugen Ihr Projekt für 64-Bit-iOS-Geräte, und der Wert der Option Map-Datei ARM in Projekt > Optionen > Delphi-Compiler > Linken lautet "MAP-Datei und DRC-Datei".
Wenn Sie ein C++-Projekt erzeugen, generiert RAD Studio standardmäßig eine Map-Debug-Datei.
Der Dateiname der Map-Debug-Datei lautet:
- In Delphi Packages für macOS:
bpl<project>.dylib.map
- In anderen Szenarien:
<project>.map
Beim Erzeugen Ihres Projekts werden die Map-Debug-Dateien standardmäßig in folgendem Ordner generiert:
- In Packages:
- Für 32-Bit-Windows:
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl
- Für andere Plattformen in Delphi und 64-Bit-Windows in C++:
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\<Plattform>
- Für andere Plattformen in C++:
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\<Plattform>\<Build-Konfiguration>
- Für 32-Bit-Windows:
- In anderen Projekten:
C:\Users\<Benutzer>\Documents\Embarcadero\Studio\Projects\<Projekt>\<Plattform>\<Build-Konfiguration>
So ändern Sie das Ausgabeverzeichnis:
- In Delphi: Verwenden Sie die Option Package-Ausgabeverzeichnis in Projekt > Optionen > Delphi-Compiler.
- In C++: Verwenden Sie die Option Verzeichnis für endgültige Ausgabe in Projekt > Optionen > C++ (Gemeinsame Optionen).