web-dev-qa-db-fra.com

Gdb print to file au lieu de stdout

Je suis sous gdb et veux examiner un de ces malheureux objets divins. Il faut plusieurs pages (et j'ai un moniteur 24 "tourné sur le côté!) Pour tout voir. Pour la facilité d'utilisation, j'aimerais que gdb imprime l'objet dans un fichier au lieu de l'écran pour pouvoir l'ouvrir vi et vous déplacer facilement Avec la polyvalence de gdb, il doit y avoir un moyen de le faire, non?

82

Vous devez activer la journalisation.

(gdb) set logging on

Vous pouvez lui dire quel fichier utiliser.

(gdb) set logging file my_god_object.log

Et vous pouvez examiner la configuration de journalisation actuelle.

(gdb) show logging

J'ai constaté que vous pouvez rediriger la sortie de gdb vers un fichier via la commande run:

(gdb) run > outfile
10

Étendre la réponse de @ qubodup

gdb core.3599 -ex bt -ex quit |& tee backtrace.log

le commutateur -ex exécute une commande gdb. Donc, ce qui précède charge le fichier principal, exécute les commandes bt, puis quit. La sortie est écrite dans backtrace.log et également à l'écran.

Une autre invocation utile de gdb (donnant stacktrace avec les variables locales de tous les threads) est

gdb core.3599 -ex 'thread apply all bt full' -ex quit
7
user7610

Vous voudrez peut-être enregistrer la sortie des commandes gdb dans un fichier. Plusieurs commandes permettent de contrôler la journalisation de gdb.

set logging on

Activer la journalisation. 

set logging off

Désactiver la journalisation.

set logging file file

Changez le nom du fichier journal actuel. Le fichier journal par défaut est gdb.txt. 

set logging overwrite [on|off]

Par défaut, gdb sera ajouté au fichier journal. Définissez overwrite si vous souhaitez que la connexion soit écrasée pour remplacer le fichier journal. 

set logging redirect [on|off]

Par défaut, la sortie de gdb ira à la fois au terminal et au fichier journal. Définissez la redirection si vous souhaitez que la sortie soit uniquement enregistrée dans le fichier journal. 

show logging

Affiche les valeurs actuelles des paramètres de journalisation.

3
husin alhaj ahmade

Une méthode simple pour consigner gdb dans un fichier tout en affichant le résultat (ce qui facilite l'écriture de commandes) consiste à utiliser tee:

gdb command |& tee gdb.log
2
qubodup

Bien qu'il y ait beaucoup de bonnes réponses ici, je dois toujours poster la seule chose qui a fonctionné pour moi:

[niko@my-laptop]# gdb MyBinary 2>&1 log.txt

C’est le seul moyen d’obtenir une sortie binaire de gdb et binaire dans le même fichier log.txt, tout en la visualisant également sur la console.

MODIFIER:

Attention: La sortie ne semble pas être partiellement synchronisée entre la sortie gdb et la sortie binaire. Quelqu'un peut confirmer? Vous voudrez peut-être vérifier si votre client telnet/ssh dispose d'une fonction permettant de consigner le résultat affiché dans votre console.

0
Niko