Forum Programmation.c options de compilation et gdb ...

Posté par  .
Étiquettes : aucune
0
23
août
2006
Je travaille actuellement sur un plugin cyrus-sasl que j'utilise dans postfix. J'ai un petit problème d'allocation à régler et j'utilise gdb/ddd pour débugger mon process smtpd.

Ce process charge plusieurs shared libraries, dans certaines je peux poser des break points, dans d'autres non. La seule différence que j'ai notée est au résultat dans le debugger de la commande "info shared", certaines bibliothèques ont Syms Read à Yes (je peux les breakpointer), d'autres à No (et je ne peux pas les breakpointer).

Si quelqu'un a une idée pour que les symboles de ces .so me soient accessibles ...


(gdb) info shared
From To Syms Read Shared Object Library
0x004b0380 0x004c2d34 Yes /lib/libpcre.so.0
0x00a83f20 0x00aaa774 Yes /usr/lib/libldap-2.3.so.0
0x007e94a0 0x007f0fd4 Yes /usr/lib/liblber-2.3.so.0
0x006a7530 0x007956b8 Yes /lib/libc.so.6
0x00e7b1f0 0x00e8dfc4 Yes /usr/local/cyrus-sasl/lib/libsasl2.so.2
0x008a6b20 0x008ad004 Yes /lib/libnss_files.so.2
0x0057abe0 0x0057d184 No /usr/local/cyrus-sasl/lib/sasl2/libplain.so.2
0x00dbc7c0 0x00dbfe44 No /lib/libcrypt.so.1
0x001b5000 0x001b7714 No /usr/local/cyrus-sasl/lib/sasl2/libldapdb.so.2
0x00e130f0 0x00e18704 No /usr/local/cyrus-sasl/lib/sasl2/libotp.so.2
0x00cb8c40 0x00cbb514 No /usr/local/cyrus-sasl/lib/sasl2/libchain.so.2



Merci pour votre aide
  • # options de débuggage

    Posté par  . Évalué à 2.

    Syms Read indique probablement qu'on peut lire les symboles ou non.

    Je suppose que si les bibliothèques ont été compilées avec options de déboggage (gcc -g ...), tu peux mettre un break-point, et sinon, tu ne peux pas.
    Il faudrait que tu recompiles les .so qui t'intéressent avec l'option -g.

    Il y a aussi la commande strip qui ôte les tables de symboles et informations de déboggage. Si elle a été utilisée, alors les .so ne contiennent plus ces informations.
    • [^] # Re: options de débuggage

      Posté par  . Évalué à 1.

      J'utilise bien l'option -g à la compilation. Il n'y a pas non plus de stripping :

      # file /usr/local/cyrus-sasl/lib/sasl2/libldapdb.so.2.0.21
      /usr/local/cyrus-sasl/lib/sasl2/libldapdb.so.2.0.21: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped

      Donc a priori, ça devrait être possible ... mais il me dit qu'il ne connait pas les symboles de ceux qui n'ont pas "Syms Read"...
      • [^] # Re: options de débuggage

        Posté par  . Évalué à 2.

        et est-ce que la commande nm peut t'afficher les symboles de libldapdb.so.2.0.21 ?
        nm /usr/local/cyrus-sasl/lib/sasl2/libldapdb.so.2.0.21
        • [^] # Re: options de débuggage

          Posté par  . Évalué à 1.

          Oui nm me donne bien la liste des symboles, je vois ce qui est interne, global ...
          De ce côté tout à l'air normal.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.