Myriad Blog 1.3.0 Wednesday, Nov 26th, 2014 at 04:16pm 

Sunday, May 7th, 2006 at 10:35am
Les mystères du "crash.log"
Si vous êtes utilisateurs de nos produits sur PC, vous avez peut-être eu la malchance de voir apparaître un jour, avant que le programme ne se ferme inopinément, une petite boîte d'alerte vous demandant de nous renvoyer un fichier appelé "crash.log".
De quoi s'agit-il exactement, et quels renseignements peut-il nous apporter?
Je vais tenter d'y répondre, sans trop entrer dans les détails techniques.
 
Le microprocesseur de votre ordinateur, lorsqu'il est en train d'exécuter une application, utilise, pour stocker les valeurs intermédiaires de ses opérations, une série de mémoires internes appelées "registres".
Il sait à tout moment, grâce à ces registres, à quel endroit il est dans le programme (donc quelle sera la prochaine instruction à effectuer), quelles sont les zones de mémoire auxquelles il va accéder, en un mot tout ce qui définit son état à un instant donné.
 
Lorsqu'une erreur survient (division par zéro, tentative d'exécuter une instruction inconnue pour ce microprocesseur, tentative de lire ou d'écrire dans une zone de mémoire non valide), le programme s'arrête et génère une "exception".
Ces exceptions, donc la plus connue est numérotée "C0000005" (justement, lecture ou écriture dans une zone de mémoire non valide) sont traitées par défaut par Windows, et provoquent l'apparition d'une boîte disant qu'un problème a été rencontré, et qu'un rapport d'erreur peut être envoyé à Microsoft.
 
Aux dernières nouvelles, ces rapports d'erreur, à leur arrivée chez Bill, s'ils ne concernent pas des produits Microsoft (et même!), sont envoyés directement dans un dossier spécial, appelé poubelle, corbeille, ou classement vertical selon les jours. Ils ne sont donc d'aucun intérêt pour nous, ni pour personne d'autre, d'ailleurs.
 
Dans nos produits, nous avons donc remplacé ce traitement inutile par la génération d'un fichier "crash.log", qui contient tous les renseignements nous permettant de savoir ce qui s'est passé:
 
- Nom et version de l'application
- Date de création de l'application
- Version de Windows de l'utilisateur
- Date et heure du crash (GMT)
- Type d'erreur rencontrée
- Liste des registres du microprocesseur
- Instructions en cours d'exécution lors du crash
- Et enfin, contenu de la "pile", zone mémoire permettant de connaître le sous-programme ayant appelé la fonction en cause, ainsi que le sous-programme ayant appelé ce sous-programme, etc.
 
A partir de cela, nous pouvons généralement savoir:
- l'application ayant subi le crash, ainsi que sa version,
- la version de Windows,  
- approximativement quelle était l'opération effectuée lorsque le crash est survenu (mais pas toujours).
 
En aucun cas nous ne pouvons connaître le détail de ce que faisait l'utilisateur à ce moment-là, sur quel fichier il travaillait, ce qu'il voyait à l'écran, quelle tête il a fait en voyant apparaître la fenêtre d'erreur (quoique, s'il avait sa webcam branchée...), donc une explication, même succinte, des conditions dans lesquelles cela s'est produit, le fichier en cause, bref tout ce qui nous permet de reproduire le problème chez nous, est absolument indispensable.
 
Dès que nous pouvons reproduire une erreur à volonté, 99% (ou même plus) du travail est déjà fait, et c'est donc l'assurance d'une correction rapide.  
Alors, en pensant à nous, vous pensez aussi à vous...
by Olivier Guillion


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013