Map-Debug-Datei (*.map) (*.map)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Dateitypen - Index


Map-Dateien sind reine Textdateien, die Informationen über die globalen Symbole, Quelldateien und Quellzeilennummern eines Programms 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.

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 oder den iOS-Simulator, und der Wert der Option Map-Datei in Projekt > Optionen > Delphi-Compiler > Linken lautet "Detailliert".
  • Sie erzeugen Ihr Projekt für 32-Bit-iOS-Geräte, 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 immer eine Map-Debug-Datei.

Der Dateiname der Map-Debug-Datei lautet:

  • In Delphi-Packages (Delphi) für macOS: bpl<Projekt>.dylib.map
  • In anderen Szenarien: <Projekt>.map

Beim Erzeugen Ihres Projekts werden die Map-Debug-Dateien standardmäßig in folgendem Ordner generiert:

  • In Packages (Delphi):
    • Für 32-Bit-Windows: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl
    • Für andere Plattformen in Delphi und 64-Bit-Windows in C++: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\<Plattform>
    • Für andere Plattformen in C++: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\<Plattform>\<Build-Konfiguration>
  • 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).

Themen

Siehe auch