92 votes

gdb: comment définir des points d'arrêt sur l'avenir des bibliothèques partagées avec un --indicateur de commande

Je suis en train d'automatiser un gdb session à l'aide de l'option --indicateur de commande. Je suis en train de définir un point d'arrêt sur une fonction dans une bibliothèque partagée (Unix équivalent d'une DLL) . Mon cmd.gdb ressemble à ceci:

set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r

Cependant, je suis le suivant:

shlomi:~/progs/bugs-externe/kde/police-la rupture de$ gdb --command=cmd.gdb...
GNU gdb 6.8-2mdv2009.0 (version de Mandriva Linux 2009.0)
Copyright (C) 2008 Free Software Foundation, Inc.
Licence GPLv3+: GNU GPL version 3 ou ultérieure 
Ceci est un logiciel libre: vous êtes libre de le modifier et de le redistribuer.
Il n'y a AUCUNE GARANTIE, dans la mesure permise par la loi. Tapez "afficher la copie"
et afficher "garantie" pour plus de détails.
Cette GDB a été configuré comme "i586-mandriva-linux-gnu"...
(pas de symboles de débogage trouvé)
La fonction "IA__FcFontMatch" ne sont pas définis.
Faire un point d'arrêt en attente sur l'avenir de la bibliothèque partagée de la charge? (y ou [n]) [a répondu N; entrée pas de terminal]

Afin de ne pas définir le point d'arrêt après tout. Comment puis-je le faire par défaut de répondre "y" pour définir des points d'arrêt dans l'attente de l'avenir de la bibliothèque partagée de la charge?

Je me souviens que j'étais capable de faire quelque chose, mais ne me souviens plus quoi.

145voto

Shlomi Fish Points 1951

Réponse à moi-même, j'aimerais donner la réponse que quelqu'un m'a donné sur IRC:

(gdb) apropos en attendant
actions: Spécifier les mesures à prendre à l'option des points de trace
définir un point d'arrêt point d'arrêt -- paramètres spécifiques
définir un point d'arrêt en attente -- Ensemble du débogueur de comportement concernant les points d'arrêt en attente
afficher le point d'arrêt point d'arrêt -- paramètres spécifiques
afficher le point d'arrêt en attente -- Show du débogueur de comportement concernant les points d'arrêt en attente

Et ainsi de définir un point d'arrêt dans l'attente de sur fait le tour; il est utilisé en cmds.gdb , comme par exemple

set breakpoint pending on
break <source file name>:<line number>

10voto

äxl Points 51

OT: Dans le terminal, il devrait ressembler à ceci pour déboguer Caja en une seule ligne:

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync

5voto

RandomNickName42 Points 3994

Avec pas de symboles.

objdump -t /lib/libacl.so
SYMBOL TABLE:
no symbols
objdump -T /lib/libacl.so
...
00002bd0 g    DF .text  000000d0  ACL_1.0     acl_delete_entry
...


(gdb) break 0x0002bd0 

(gdb) x/20i acl_delete_entry
0x2bd0 <acl_delete_entry>:      stwu    r1,-32(r1)
0x2bd4 <acl_delete_entry+4>:    mflr    r0
0x2bd8 <acl_delete_entry+8>:    stw     r29,20(r1)
0x2bdc <acl_delete_entry+12>:   stw     r30,24(r1)
0x2be0 <acl_delete_entry+16>:   mr      r29,r4
0x2be4 <acl_delete_entry+20>:   li      r4,28972

1voto

PW. Points 3052

Vous avez besoin de rompre en principal, par exemple, et de les exécuter à la pause. Si les bibliothèques partagées seront chargés.

expliqué pour apache

Prograide.com

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.

Powered by:

X