2010-09-12 3 views

Répondre

2

Erm, no. Les fichiers exécutables contiennent du code machine. Et les valeurs d'initialisation pour les variables globales. Sous Windows, les informations de débogage sont normalement stockées dans un fichier séparé, un fichier .pdb. Une partie des données de débogage de ce fichier à propos d'une fonction ou d'une variable de votre programme s'appelle un symbole.

L'API dbghelp est described here.

10

Une explication de très haut niveau suit:

Tout d'abord les symboles ne sont pas en C++ monde seul. Ils existent dans des binaires de plusieurs langages de haut niveau tels que C, C++, etc. lorsqu'ils sont construits avec certains paramètres spécifiés. Prenons la définition

'int i = 2;'

Dans le binaire, 'i' est juste un emplacement de mémoire (par exemple 0x10203040) qui est en cours d'initialisation avec 2. Il n'y a pas d'emplacement de mémoire appelé 'i'. Le nom 'i' est assigné à cet emplacement de mémoire en vertu de symboles de débogage qui sont chargés avec des binaires (quand ils sont construits avec certains drapeaux), qui maintiennent une carte de 'emplacement de mémoire' aux 'noms de niveau source'.

A titre d'exemple, le PE file format dispose d'un répertoire de débogage qui stocke des informations sur les symboles de débogage. Ils sont très utiles lors du débogage car, en l'absence de tels symboles de débogage, le débogage en termes de binray 0 et 1 serait une tâche vraiment très difficile. Ainsi, lorsque vous déboguez un tel binaire (qui a la définition ci-dessus de 'i') qui a été construit avec des drapeaux de débogage, le débogueur sait que l'emplacement de mémoire '0x10203040' correspond à 'i' grâce au répertoire de débogage dans le PE fichier.

+0

Les symboles de débogage peuvent être stockés à la fois dans le répertoire de débogage de PE ou dans un fichier pdb distinct, n'est-ce pas? – COMer

Questions connexes