[gull] tracer l'exécution et connaître les lib chargées
Gerome Fournier
gerome.fournier at goelaan.ch
Thu Nov 24 14:23:01 CET 2005
On Thu, Nov 24, 2005 at 02:07:54PM +0100, Julien Linder wrote:
>
> Bonjour.
>
> J'aimerais pouvoir tracer l'exécution d'un programme et
> savoir quelles librairies il charge pour tenter de résoudre
> le problème suivant :
>
> J'ai le programme suivant qui plante :
>
> multipass:/home/julien # /sbin/insserv -r /etc/init.d/cups
> Segmentation fault
>
> Bon. Ben j'aimerais en savoir un peu plus. Ce truc ne plantait
> pas avant (avant quoi ? ben avant ...justement). Je me suis dit
> qu'un fichier avait du disparaître ou être corrompu. J'ai commencé
> par désinstaller puis réinstaller insserv-1.00.5-6.i586.rpm,
> mais j'ai toujours le même problème.
>
> Peut-être sont-ce les librairies utilisées. Comment fait-on
> pour savoir quelles librairies sont chargées pour un programme
> donné ? Peut-on tracer l'exécution (sans compiler
> spécialement le programme pour ça) pour essayer de déterminer
> quand a lieu le plantage (à ma connaissance non) ?
Pour connaitre les librairies dynamiques dont dépend un
programme:
$ ldd /sbin/insserv
Ne seront pas listees les libraries qui pourraient etre chargees
dynamiquement depuis le programme, via dlopen.
Sinon, strace pourra t'aider, tu peux l'utiliser ainsi:
$ strace /sbin/insserv -r /etc/init.d/cups
Eventuellement limiter l'output de strace en ne tracant que
certains appels systemes, par exemple l'appel open(2), dans
l'exemple suivant:
$ strace -e open /sbin/insserv -r /etc/init.d/cups
Possibilite d'ajouter le flag "-f" pour tracer egalement les
processus fils. Pour plus d'information, man strace.
--
Gerome Fournier
More information about the gull
mailing list