API (*.map)

De RAD Studio
Aller à : navigation, rechercher

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.

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, OS X 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 OS X : 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\20.0\Bpl
    • Pour les autres plates-formes dans Delphi et Windows 64 bits dans C++ : C:\Utilisateurs\Public\Documents\Embarcadero\Studio\20.0\Bpl\<plate-forme>
    • Pour les autres plates-formes dans C++ : C:\Utilisateurs\Public\Documents\Embarcadero\Studio\20.0\Bpl\<plate-forme>\<configuration de construction>
  • 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).

Rubriques

Voir aussi