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.
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.
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.
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 ?
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?
@EOL, vous avez peut-être manqué le binaire en tant que premier argument et n'avez fourni que le fichier de vidage de base.
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
Tout d'abord, trouvez le répertoire où le fichier core est généré.
Ensuite, utilisez la commande ls -ltr
dans le répertoire pour trouver le fichier core généré le plus récemment.
Pour charger le fichier core, utilisez
gdb chemin_binaire chemin_du_fichier_core
Cela chargera le fichier core.
Ensuite, vous pouvez obtenir des informations en utilisant la commande bt
.
Pour une trace fonctionnelle détaillée, utilisez bt full
.
Pour afficher les variables, utilisez print nom-de-la-variable
ou p nom-de-la-variable
Pour obtenir de l'aide sur GDB, utilisez l'option help
ou utilisez apropos mot-clé-de-recherche
Utilisez frame numéro_de_frame
pour aller au numéro de frame désiré.
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.
Pour arrêter GDB, utilisez quit
ou q
.
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
Veuillez consulter ces URL pour l'emplacement du vidage de base : unix.stackexchange.com/questions/192716/… stackoverflow.com/questions/2065912/…
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.
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