De temps en temps (ahem...), mon code se bloque sur un système ; assez souvent, mes utilisateurs envoient des captures d'écran des boîtes de dialogue de blocage de Windows. Par exemple, j'ai récemment reçu ceci :
Unhandled win32 exception @ 0x3a009598 in launcher2g.exe:
0xC00000005: Access violation writing location 0x00000000.
Il est clair pour moi (en raison du code 0xc0000005 ainsi que du message d'erreur écrit) que je suis un pointeur nul quelque part dans mon processus launcher2g.exe. Ce qui n'est pas clair pour moi, c'est la signification du nombre '0x3a009598'. S'agit-il de l'offset du code dans l'espace d'adressage du processus où l'instruction assembleur est stockée et qui a déclenché le problème ?
En supposant que 0x3a000000 est la position où le module launcher2g.exe a été chargé dans le processus, j'ai utilisé le débogueur de Visual Studio pour vérifier le code assembleur à 0x3a009598 mais malheureusement c'était juste beaucoup d'instructions 'int 3' (c'était une construction de débogage, donc il y a beaucoup de remplissage int 3).
Je me suis toujours demandé comment tirer le meilleur parti de ces nombres @ 0x12345678. Ce serait formidable si quelqu'un ici pouvait m'éclairer sur ce sujet, ou partager des pointeurs vers des explications complémentaires.
UPDATE : Au cas où quelqu'un se poserait cette question à l'avenir, voici une lecture très intéressante que j'ai trouvée et qui explique comment donner un sens à des messages d'erreur comme celui que j'ai cité ci-dessus : Recherche d'informations sur les accidents à l'aide du fichier MAP .