Gdb imprimer dans un fichier au lieu de stdout

Je cours gdb et je veux examiner l'un de ces malheureux objets de Dieu. Il faut beaucoup de pages (et j'ai un moniteur 24" tourné sur le côté! pour voir l'ensemble de la chose. Pour faciliter l'utilisation, je voudrais que gdb imprime l'objet dans un fichier au lieu de l'écran afin que je puisse l'ouvrir dans vi et me déplacer facilement. Avec toute la polyvalence de gdb, il doit y avoir un moyen de le faire, non?

78
demandé sur pythonic metaphor 2011-05-09 22:53:39

5 réponses

, 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
119
répondu Tadeusz A. Kadłubowski 2011-05-09 19:04:30

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

(gdb) run > outfile
10
répondu Lucas Gabriel Sánchez 2013-10-31 19:31:24

Extension de 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 de base, exécute la commande bt, puis la commande quit. La sortie est écrite dans backtrace.log et également sur l'écran.

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

gdb core.3599 -ex 'thread apply all bt full' -ex quit
7
répondu user7610 2016-04-24 09:54:18

Vous pouvez enregistrer la sortie des commandes gdb dans un fichier. Il existe plusieurs commandes pour contrôler la journalisation de gdb.

set logging on

Activer la journalisation.

set logging off

Désactiver la journalisation.

set logging file file

Change 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 définir logging on pour écraser le fichier journal à la place.

set logging redirect [on|off]

Par défaut, la sortie gdb ira à la fois au terminal et au logfile. Définissez la redirection si vous voulez que la sortie aille uniquement vers le fichier journal.

show logging

Affiche les valeurs actuelles des paramètres de journalisation.

5
répondu husin alhaj ahmade 2016-09-23 11:12:56

Une méthode simple pour enregistrer gdb dans un fichier tout en voyant la sortie (ce qui facilite l'écriture des commandes) consiste à utiliser tee:

gdb command |& tee gdb.log
2
répondu qubodup 2015-12-11 04:09:09