2017-01-19 1 views
0

Je débogue un projet C dans l'IDE eclipse CodeSourcery. Le projet s'exécute dans un périphérique linux-bras donc je compile et le débogue avec gdbserver. Mon projet consiste en un programme principal et quelques bibliothèques partagées, que je compile avec -g3 tags (essayé -g aussi). Tout construit correctement: l'éditeur de liens trouve toutes les dépendances, je copie les fichiers compilés dans la machine à distance et je lanceEclipse: gdbserver ne trouve pas les fichiers source

$gdbserver :2159 Test & 

et je peux commencer le débogage à distance après avoir configuré Debugger IDE. Je débogue correctement jusqu'à ce que j'entre dans une fonction de bibliothèque. Je reçois un message de sortie

[New Thread 1032] 

Aucune erreur se conduit, sauf que je ne peux pas déboguer dans la fonction, mais la fonction se termine correctement et je peux continuer mon programme principal. Plus tard, dans une autre bibliothèque, j'ai une erreur de segmentation.

Je suppose que gdbserver recherche des sources sur ma machine locale car je peux déboguer mon programme principal. Pourquoi ne puis-je pas déboguer le code source de ma bibliothèque?

Merci

+0

Toutes les bibliothèques sont donc compilées avec '-O0' et' -g3'? –

+0

Oui, c'est vrai – Joster

Répondre

0

How to runtime debug shared libraries?

En regardant cette question, vous pouvez voir que gdb peut attribuer des points d'arrêt à des fonctions à l'intérieur des bibliothèques en utilisant simplement un nom de fonction.

(gdb) b func 
Function "func" not defined. 
Make breakpoint pending on future shared library load? (y or [n]) y 
Breakpoint 1 (func) pending. 
+0

Pas exactement mon problème. Comment puis-je faire cela quand gdbserver ne trouve pas les fichiers sources de la bibliothèque? – Joster