260 votes

Analyse du fichier de vidage de base</HTML>

Quels sont tous les éléments que je devrai vérifier lors de l'analyse d'un fichier de vidage de mémoire principale?

S'il vous plaît dites-le moi à partir de zéro.

1 votes

Pouvez-vous décrire quel est votre problème. Quelle commande pose problème? Peut-être faire référence au chapitre du document : sourceware.org/gdb/download/onlinedocs/gdb/index.html

386voto

Michael Aaron Safyan Points 45071

Vous avez juste besoin d'un binaire (avec les symboles de débogage inclus) identique à celui qui a généré le fichier core dump. Ensuite, vous pouvez exécuter gdb chemin/vers/le/binaire chemin/vers/le/fichier/core/dump pour le déboguer.

Lorsqu'il démarre, vous pouvez utiliser bt (pour backtrace) pour obtenir une trace de la pile depuis le moment du crash. Dans la trace de la pile, chaque invocation de fonction se voit attribuer un numéro. Vous pouvez utiliser frame _numéro_ (en remplaçant numéro par le numéro correspondant dans la trace de la pile) pour sélectionner un frame de pile particulier.

Ensuite, vous pouvez utiliser list pour voir le code autour de cette fonction, et info locals pour voir les variables locales. Vous pouvez également utiliser print _nom_de_la_variable_ (en remplaçant "nom_de_la_variable" par un nom de variable) pour voir sa valeur.

Taper help dans GDB vous donnera un invite qui vous permettra de voir des commandes supplémentaires.

4 votes

Il est possible d'exécuter gdb chemin/vers/le/binaire chemin/vers/le/noyau lorsque l'application qui a planté n'a pas été compilée avec le drapeau -g, mais que chemin/vers/le/binaire est la même version de l'application, mais avec le drapeau -g ?

2 votes

J'ai essayé la commande bt, mais elle indique pas de pile. Le fichier core est grand (ulimit -c illimité). Qu'est-ce que je pourrais manquer?

8 votes

@EOL, vous avez peut-être manqué le binaire en tant que premier argument et n'avez fourni que le fichier de vidage de base.

129voto

Mayank Points 321

Étapes pour déboguer un coredump en utilisant GDB :

Aide générique :

gdb lance GDB, sans fichiers de débogage

gdb programme commence le débogage du programme

gdb programme coredump déboguer le coredump core produit par le programme

gdb --help décrit les options de la ligne de commande

  1. Tout d'abord, trouvez le répertoire où le fichier core est généré.

  2. Ensuite, utilisez la commande ls -ltr dans le répertoire pour trouver le fichier core généré le plus récemment.

  3. Pour charger le fichier core, utilisez

    gdb chemin_binaire chemin_du_fichier_core

    Cela chargera le fichier core.

  4. Ensuite, vous pouvez obtenir des informations en utilisant la commande bt.

    Pour une trace fonctionnelle détaillée, utilisez bt full.

  5. Pour afficher les variables, utilisez print nom-de-la-variable ou p nom-de-la-variable

  6. Pour obtenir de l'aide sur GDB, utilisez l'option help ou utilisez apropos mot-clé-de-recherche

  7. Utilisez frame numéro_de_frame pour aller au numéro de frame désiré.

  8. Utilisez les commandes up n et down n pour sélectionner n frames vers le haut et sélectionner n frames vers le bas respectivement.

  9. Pour arrêter GDB, utilisez quit ou q.

0 votes

1- Tout d'abord, trouver le répertoire où le fichier corefile est généré. Comment localiser cela, je ne parviens pas à trouver l'emplacement. Merci

1 votes

Veuillez consulter ces URL pour l'emplacement du vidage de base : unix.stackexchange.com/questions/192716/… stackoverflow.com/questions/2065912/…

1 votes

Que voulez-vous dire par "sans fichiers de débogage" ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X