Forum Linux.embarqué gdbserver sur cible Mips et librairies compilées en statique

Posté par  .
Étiquettes : aucune
0
16
oct.
2007
bonjour,


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  . Évalué à 2.

    bon je réponds tout seul à mon problème :

    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 :

    (gdb) target remote 192.168.1.1:10000
    Remote debugging using 192.168.1.1:10000
    0x2aaa8bc0 in ?? ()
    (gdb) b main
    Breakpoint 1 at 0x4009ec: file main.c, line 35.
    (gdb) c
    Continuing.

    Breakpoint 1, main () at main.c:35
    35 if (pthread_create(&filsA, NULL, thread1, "AA")) {
    (gdb) n
    0x00400c20 in ?? ()
    (gdb) n
    Cannot find bounds of current function


    Sur la cible :

    Process testgdb created; pid = 765
    Listening on port 10000
    Remote debugging from host 192.168.1.10
    gdb: error initializing thread_db library.
    gdb: error initializing thread_db library.
    gdb: error initializing thread_db library.


    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.