Comment recharger les fichiers source dans GDB

Est-il une commande dans gdb que je peux utiliser pour (re)charge /"actualiser" fichiers source? (Aussi loin que je peux voir, gdb fonctionne uniquement avec source répertoires, selon Débogage avec GDB: Source - et il n'y a pas de commande spécifique pour "rafraîchir")

De fond au sujet de mon problème:

J'utilise une machine virtuelle avec un noyau de débogage, donc je peux me connecter à une instance locale de gdb, et pouvez déboguer des modules du noyau. Les modules sont compilés avec les informations de débogage, ce qui spécifie les dossiers où la source des modules est conservé (Instruire GDB 6.5 utilisation de source intégré dans le fichier de l'objet - Débordement de Pile). J'ai les répertoires source dans la même voie(s) dans les deux VM et de la machine locale.

Le problème est que cela - je besoin de faire un peu d'étapes dans l'ordre pour obtenir le module d'erreur de segmentation et la distance gdb pour aller sur la pile. Puis-je faire une trace, et je peux voir les fichiers source de référence, c'est à dire

#0  0xc0132a13 in ?? ()
#1  0xc056e551 in ?? ()
#2  0xc056e506 in ?? ()
#3  0xd8be53f3 in mymodule_func1 (var1=0xd79f9b44, var2=0x0, var3=825269148)
    at /media/src/mymodule.h:954
#4  0xd8be53d0 in mymodule_func2 (data=3617561412)
    at /media/src/mymodule.h:936
#5  0xc014fe87 in ?? ()
#6  0xc0151478 in ?? ()

Puis j'ai essayer de faire dire, list /media/src/mymodule.h:954 - et je me rends compte que j'ai changé des trucs sur la version locale de mymodule.h fichier!!

J'ai donc annuler les modifications, mais, malheureusement, GDB ne pas voir ces changements! Et, bien sûr, je ne veux pas redémarrer GDB - parce que cela signifie que je dois redémarrer la VM, et de passer par l'ensemble de la procédure afin d'obtenir le module de noyau d'erreur de segmentation à nouveau 🙁 !!

Puis j'ai essayer de faire quelque chose comme ceci:

(gdb) show symbol-reloading
Dynamic symbol table reloading multiple times in one run is off.
(gdb) set symbol-reloading on
(gdb) add-symbol-file ~/mymodule.o 0xd8be4000
add symbol table from file "/media/src/mymodule.o" at
    .text_addr = 0xd8be4000
(y or n) y
Reading symbols from /media/src/mymodule.o...done.

... dans l'espoir qu'il sera en quelque sorte "recharger" les fichiers de la source - mais, malheureusement, list /media/src/mymodule.h:954 montre que ça ne marche pas, rien n'est changé - même si gdb ne reconnaître que quelque chose a changé, comme dans warning: Source file is more recent than executable.... (donc, pour le moment, je dois redémarrer toute la VM et gdb ainsi 🙁 🙁 )

InformationsquelleAutor sdaau | 2010-11-07