OVH Cloud OVH Cloud

script gdb

4 réponses
Avatar
manu
Je dois collecter des infos sur un programme par gdb de façon le plus
possible automatisée. Parmi mes quelques problèmes, je dois faire en
boucle:

continuer l'execution jusqu'à un point d'arret
afficher $r5 octets à l'adresse $r3

Comment boucler? Pour le moment je fais un fichier de script où les
commandes sont repetées à l'envie, mais il doit y avoir un moyen de
boucler jusqu'à terminaison du programme, non?

Comment afficher un nombre d'octets variable?
x/30w $r3 ca marche très bien, par contre x/$r5w $r3 ne marche pas. Y'a
un moyen? J'ai tenté x/${r5}w, x/'$r5'w, x/"$5"w, mais rien n'y fait.

Et pour finir, a-t-on un moyen de faire un break sur chaque appel
système, ou fait il placer les points d'arrets à la main?

--
Emmanuel Dreyfus
A lire: 240 pages en français sur l'administration UNIX avec BSD
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3
manu@netbsd.org

4 réponses

Avatar
Manu
Emmanuel Dreyfus wrote:
Je dois collecter des infos sur un programme par gdb de façon le plus
possible automatisée. Parmi mes quelques problèmes, je dois faire en
boucle:


Jette un oeil à GDB/MI (GDB Machine Interface) pour prendre le controle
de GDB.
Les commandes sont semblables mais il est plus simple de parser les sorties.

Avatar
manu
Manu wrote:

Jette un oeil à GDB/MI (GDB Machine Interface) pour prendre le controle
de GDB.


Bon, alors en tapant ca sur Gogle, j'ai des centaines d'occurence de la
doc officielle qui expliquent en détail comment ca s'utilise une fois
qu'on a lancé le mode GDB/MI, mais qui ne disent pas comment on y
rentre. Comment on fait?

Les commandes sont semblables mais il est plus simple de parser les sorties.


Mon problème n'est pas vraiment la sortie, mais plutot l'entrée...
--
Emmanuel Dreyfus
A lire: 240 pages en français sur l'administration UNIX avec BSD
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3


Avatar
ts
"E" == Emmanuel Dreyfus writes:






E> Bon, alors en tapant ca sur Gogle, j'ai des centaines d'occurence de la
E> doc officielle qui expliquent en détail comment ca s'utilise une fois
E> qu'on a lancé le mode GDB/MI, mais qui ne disent pas comment on y
E> rentre. Comment on fait?

svg% cat aa
print 1+2
-gdb-exit
svg%

svg% gdb -silent --interpreter=mi a.out < aa
(gdb)
&"print 1+2n"
~"$1 = 3"
~"n"
^done
(gdb)
^exit
svg%


--

Guy Decoux





Avatar
Manu
Emmanuel Dreyfus wrote:

Bon, alors en tapant ca sur Gogle, j'ai des centaines d'occurence de la
doc officielle qui expliquent en détail comment ca s'utilise une fois
qu'on a lancé le mode GDB/MI, mais qui ne disent pas comment on y
rentre. Comment on fait?



Je crois qu'il faut passer par la création de terminaux. 1 pour l'entrée
et 1 pour la sortie par exemple.
Cherche dans les frontends pour GDB, genre DDD ou peut-être plus facile
(car en TCL) celui de RedHat: Insight.