J'essaye d'automatiser une session gdb en utilisant le --command
drapeau. J'essaie de définir un point d'arrêt sur une fonction dans une bibliothèque partagée (l'équivalent Unix d'une DLL). Mon cmds.gdb ressemble à ceci:
set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r
Cependant, j'obtiens ce qui suit:
shlomi: ~ / progs / bugs-external / kde / font-casser $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0 (Mandriva Linux version 2009.0) Copyright (C) 2008 Free Software Foundation, Inc. Licence GPLv3 +: GNU GPL version 3 ou ultérieure Il s'agit d'un logiciel gratuit: vous êtes libre de le modifier et de le redistribuer. Il n'y a AUCUNE GARANTIE, dans la mesure permise par la loi. Tapez "show copying" et "Afficher la garantie" pour plus de détails. Ce GDB a été configuré comme "i586-mandriva-linux-gnu" ... (aucun symbole de débogage trouvé) La fonction "IA__FcFontMatch" n'est pas définie. Rendre le point d'arrêt en attente sur le futur chargement de la bibliothèque partagée? (o ou [n]) [répondu N; entrée ne provenant pas de la borne]
Cela ne définit donc pas le point d'arrêt après tout. Comment puis-je définir par défaut la réponse "y" pour définir des points d'arrêt sur le futur chargement de la bibliothèque partagée en attente?
Je me souviens que j'ai pu faire quelque chose, mais je ne me souviens pas quoi.
Réponses:
En me répondant, j'aimerais donner la réponse que quelqu'un m'a donnée sur IRC:
Et donc définir le point d'arrêt en attente sur fait l'affaire; il est utilisé
cmds.gdb
comme par exemplela source
Program received signal SIGILL, Illegal instruction
. Je recherche des points d'arrêt à partir d'un fichier et je l'aiset breakpoint pending on
depuis certains de mes points d'arrêt sont dans une bibliothèque que le programme charge. Si j'ajoute des points d'arrêt manuellement, il n'y a pas d'erreur. Quelqu'un d'autre fait face à un problème similaire?OT: Dans le terminal, cela ressemblerait à ceci pour déboguer Caja en une seule ligne:
la source
-ex
n'a pas fonctionné pour moi. J'ai dû mettre les commandes dans un fichier tmp et appeler avec:gdb -x /tmp/gdb.commands myexecutible
Sans symboles.
la source