Fichier de débogage map
Remonter à Types de fichiers - Index
Les fichiers map sont des fichiers de texte brut qui contiennent des informations sur les symboles globaux, le fichier source et les numéros des lignes du source de votre programme (ces informations sont utiles pour le débogage). Par exemple, quand votre application se bloque (par exemple, à cause d'une violation d'accès), vous pouvez utiliser l'adresse résultante pour localiser le module (méthode) dans lequel l'application s'est bloquée.
Sommaire
Contenu et format du fichier de débogage map
Par défaut, RAD Studio génère un fichier map qui contient des informations générales sur les segments, notamment :
- Une liste des segments avec leurs noms
- L'adresse de démarrage du programme et l'offset
- La classe :
- CODE (contenant les instructions de l'exécutable)
- DATA (contenant les variables globales et les variables statiques qui sont initialisées par le programmeur)
- BSS (contenant les variables allouées statiquement) ou
- TLS (stockage local du thread)
- Tout avertissement ou message d'erreur produit pendant la liaison
//hello.cpp
#include<iostream>
#include<string>
int main(int, char**)
{
std::string s("hello world");
std::cout<<s;
return 0;
}
Par exemple, pour l'exemple de code précédent, le fichier map créé après la liaison du fichier .cpp a l'aspect suivant :
Start Length Name Class 0001:00401000 0000214D4H _TEXT CODE 0002:00423000 0000059B8H _DATA DATA 0003:004289B8 000002F24H _BSS BSS 0004:00000000 00000009CH _TLS TLS
Lors de l'appel deBCC32.EXE avec l'option -M, auprès des informations par défaut, le fichier .map contient les deux sections suivantes :
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>() . . .
La section Address Publics by Name contient des paires d'adresses de démarrage (segment:offset) et des méthodes, des variables ou d'autres symboles. Ces paires sont triées par le nom des symboles. La section Address Publics by Value contient les mêmes paires que la section Address Publics by Name, mais elles sont triées par valeur.
Génération des fichiers de débogage map
Lorsque vous construisez un projet Delphi, RAD Studio génère un fichier de débogage map si votre projet rencontre l'une des conditions suivantes :
- Vous construisez votre projet pour Windows 32 bits, Windows 64 bits, macOS ou le simulateur iOS, alors que la valeur de l'option Fichier map de Projet > Options > Compilateur Delphi > Liaison est "Détaillé".
- Vous construisez votre projet pour le périphérique iOS 32 bits ou le périphérique iOS 64 bits alors que la valeur de l'option ARM de fichier map de Projet > Options > Compilateur Delphi > Liaison est "fichier map et fichier .drc".
Lorsque vous construisez un projet C++, RAD Studio génère toujours un fichier de débogage map.
Le nom de votre fichier de débogage map est :
- Dans les Packages Delphi pour macOS :
bpl<projet>.dylib.map
- Dans n'importe quel autre scénario :
<projet>.map
Lorsque vous construisez votre projet, votre fichier de débogage map est généré par défaut dans le dossier suivant :
- Dans les Packages :
- Pour Windows 32 bits :
C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Bpl
- Pour les autres plates-formes dans Delphi et Windows 64 bits dans C++ :
C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Bpl\<plate-forme>
- Pour les autres plates-formes dans C++ :
C:\Utilisateurs\Public\Documents\Embarcadero\Studio\21.0\Bpl\<plate-forme>\<configuration de construction>
- Pour Windows 32 bits :
- Dans les autres projets :
C:\Utilisateurs\<utilisateur>\Documents\Embarcadero\Studio\Projects\<projet>\<plate-forme>\<configuration de construction>
Pour changer de répertoire de sortie :
- Dans Delphi, utilisez l'option Répertoire de sortie des packages de Projet > Options > Compilateur Delphi.
- Dans C++, utilisez l'option Répertoire de sortie final de Projet > Options > C++ (options partagées).