[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