j'ai un problème pour utiliser gdbserver sur une cible Mips pour débugger un programme ayant ses librairies compilées en dynamique.
voici mon problème :
j'utilise un programme de test basique du type :
int main(int argc, char **argv)
{
int var=0;
int var1=0;
while(1)
{
var +=1;
var1 +=1;
}
return 0;
}
ce code est compilé avec mips-linux-gcc et l'option -g
j'utilise ensuite gdbserver sur ma cible Mips pour executer le code.
en local, j'utilise une version de gdb compilée avec l'option : --
target=mips-linux-uclibc
lorsque j'essaye de débugger mon programme, j'obtiens l'erreur suivante dans gdb :
This GDB was configured as "--host=i686-pc-linux-gnu --target=mips-linux-uclibc"...
(gdb) target remote 192.168.1.1:10000
Remote debugging using 192.168.1.1:10000
0x2aaa8bc0 in ?? ()
(gdb) b main
Breakpoint 1 at 0x400750: file main.c, line 3.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint -2.
Error accessing memory address 0x2aaa69ad: Erreur d'entrée/sortie.
aucun message d'erreur ne s'affiche sur gdbserver.
je ne vois pas trop d'ou pourrais venir le problème car si mon programme est compilé avec l'option -static de gcc le débug s'effectue correctement et je n'obtient aucune erreur.
Merci par avance.
# Semi résolu ...
Posté par midnight . Évalué à 2.
en fait je ne donnais pas le chemin des librairies à gdb. après lui avoir donné le chemin correct avec les options
(gdb) set solib-absolute-prefix /dev/null
(gdb) set solib-search-path /chemin_de_mes_lib
j'arrive à débugger mon programme meme si mes librairies ne sont pas compilées en statique.
j'ai maintenant un deuxième problème :
Mon but est de réussir à débugger un programme multithread.
J'ai réalisé comme dans le premier cas un programme test bidon initialisant 2 threads et qui fonctionne.
Comme pour mon premier programme, j'arrive à le débugger s'il est compilé en statique mais pas autrement. Ce coup-ci les erreurs sont les suivantes :
sur la machine de developpement :
Sur la cible :
J'ai bien définis le chemin des librairies avec les fonctions set solib-absolute-prefix et set solib-search-path. De meme, la librairie libpthread.so est bien présente dans le répertoire des librairies sur ma machine locale.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.