2017-03-17 5 views
-1

J'analyse un fichier de vidage sur incident qui s'est écrasé lors du chargement ou de l'enregistrement d'un certain fichier de données (local). La pile d'appels montre qu'elle a exécuté le chargement de ce fichier au moment du crash.Un fichier de vidage sur incident nécessite-t-il le fichier local sur lequel il fonctionnait au moment du plantage?

Je me demande si j'ai besoin d'avoir ce fichier de données avec le fichier de vidage ainsi pour analyser avec précision le crash? Est-ce que cela affectera les pointeurs d'une manière ou d'une autre comme le nom de fichier etc?

+0

Le fichier de vidage sur incident n'a besoin de rien. mais comme l'a dit Thomas Weller, * vous * aurez peut-être besoin des binaires pour comprendre le crash. Avez-vous «besoin» de l'analyser «avec précision»? Peut être. Peut être pas. Cela dépend du bug qui a causé le crash. – conio

Répondre

1

Non, vous n'en avez pas besoin. Ce que vous allez analyser avec gdb est un instantané de la mémoire utilisée par votre application lors de son crash, avec votre application. Ainsi, il suffit d'avoir le fichier core et votre application (bibliothèques binaires + requises, dans le meilleur des cas vous aurez besoin du code source pour pouvoir relier les informations de débogage aux algorithmes). Tous les pointeurs, variables et autres auront des valeurs selon le moment où le noyau a été déversé. MISE À JOUR: Mais, vous pouvez également exécuter votre application de manière interactive à partir du débogueur et l'étape jusqu'à ce que vous plantez. Alors oui, vous aurez besoin de votre fichier.

+0

Mais n'est-ce pas la façon dont nous étudions tous les plantages en entrant dans le code en utilisant le fichier crash dump? J'étudie la pile d'appel et les valeurs des variables aux points de différence. Il n'est pas clair avec votre mise à jour quand en avons-nous besoin? – zar

+1

Lors de l'analyse du core dump, vous ne pouvez naviguer que dans la pile, mais vous ne pouvez pas exécuter d'instructions de manière interactive. Cela signifie que vous ne pouvez pas dire au débogueur "s'il vous plaît exécuter la ligne suivante". Ceci est uniquement disponible dans le cas 2 que j'ai décrit lorsque votre débogueur est attaché à une application qui fonctionne (ou est lancé à partir du débogueur) et il attrape le plantage. – dmi

+0

Aussi, pour résumer. Il y a 2 cas: 1) enquête post-accident, 2) débogage en ligne. Si vous avez mentionné un fichier core dump, c'est le cas n ° 1). – dmi

1

Cela dépend du type de vidage sur incident et des indicateurs utilisés lors de la création du vidage sur incident. Un vidage de la mémoire complète a toute la mémoire que l'application avait également au moment de l'accident. Les drapeaux MINIDUMP_TYPE vous donnent une idée de ce qui est possible. Pour C++, tout vidage est généralement utile, car la mémoire complète .NET est préférée. En plus de la sauvegarde, vous avez rarement besoin de fichiers supplémentaires, à l'exception des fichiers PDB qui contiennent des informations sur les fichiers source et les numéros de ligne.