comment définir un point d'arrêt sur la fonction dans une bibliothèque partagée qui n'a pas été chargé dans gdb
J'ai une bibliothèque partagée libtest.so
qui seront chargés dans le programme principal à l'aide de dlopen
. Fonction test()
résident dans libtest.so
et sera appelé dans le programme principal par dlsym
. Est-il possible que je pourrait mettre en place un point d'arrêt sur test
?
Veuillez noter que le principal programme n'a pas été liée à libtest.so
pendant le temps de lien. Sinon , je devrais être capable de définir le point d'arrêt bien que c'est une attente de l'action. Dans mon cas, lorsque je ne b test
, gdb va me dire Function "test" not defined
.
Pourriez-vous définir un point d'arrêt sur
test
après le chargement libtest.so
avec dlopen
?OriginalL'auteur pierrotlefou | 2010-04-15
Vous devez vous connecter pour publier un commentaire.
Fait gdb dois vous dire qu'il est en mesure de résoudre le symbole dans l'avenir, lorsque de nouvelles bibliothèques sont chargées:
Et plus tard une fois que l' .donc l'objet est chargé, il va résoudre le point d'arrêt, par ex.:
OriginalL'auteur diciu
En fait, cette méthode ne fonctionne pas toujours.
Supposons que j'ai plusieurs bibliothèques partagées qui ont chacun une fonction nommée "Init". Si j'ai chargé une autre bibliothèque, puis "b Init" est en cours pour définir le point d'arrêt pour le mauvais exemple de la fonction "Init". J'ai donc pour spécifier le point d'arrêt comme ceci:
(gdb) b object5.c:66
Pas de fichier source nommé object5.c.
OriginalL'auteur Michael
Une autre façon est de spécifier le nom de fichier et der fonction, par exemple:
Ce nom doit être unique. Peut-être vous voulez aussi de spécifier le chemin d'accès au code source (comme l'a déjà suggéré) par:
OriginalL'auteur musbach
citation de https://sourceware.org/gdb/onlinedocs/gdb/Set-Breaks.html
peut-être vous pouvez utiliser le bouton "définir le répertoire the_location_of_object5.c_file" pour corriger ce problème.
OriginalL'auteur jasonxiaole