2012-06-15 9 views
5

Sto cercando di visualizzare il codice sorgente di Wireshark per capire l'analisi del protocollo, ma ho scoperto che quando uso solo gdb ./wireshark, quando uso premere Ctrl + C e impostare un punto di interruzione, quindi digitare C, il processo muore. Voglio sapere cosa fa libtool per rendere possibile il debugging di GDB.perché devo usare libtool --mode == eseguire gdb wireshark per rendere possibile il debugging wireshark

ho già letto man libtool e dice libtool è uno strumento lo rendono facile da utilizzare tutti i tipi di .a o .o da una semplice interfaccia, ma non so che cosa la chiave è quello di rendere possibile con gdb wireshark libtool.

risposta

5

Quando si utilizza libtool per creare un programma, gestirà tutte le difficoltà e le particolarità dell'utilizzo di librerie condivise nella piattaforma.

Una delle difficoltà è il debug, perché quando il debug si desidera caricare le librerie condivise che sono non installati nel sistema (sono appena compilati). Quindi, quando libtool crea un eseguibile, lo sposta in una directory nascosta (.libs) e di solito inserisce uno script o un simile con lo stesso nome in cui è possibile vederlo. Questo script farà tutta la magia per eseguire il programma corretto con le librerie corrette.

Ma, ovviamente, non è possibile eseguire il debug di uno script con gdb! Così, al fine di superare i parametri corretti per gdb per essere in grado di eseguire il debug il programma giusto con le librerie giuste, è necessario eseguire il comando:

$ libtool --mode=execute gdb ./wireshark 

Si può vedere che cosa fa eseguendo:

$ libtool --mode=execute echo ./wireshark 

Basta non utilizzare i file da .libs direttamente: utilizzare sempre libtool o gli script wrapper.

+0

grazie :) è molto utile –

+0

Questo non funziona. Ho provato 'libtool e echo binary' in una directory e ha stampato'/path/to/.libs/binary' eseguendolo direttamente non fornisce il risultato previsto, né 'libtool e /path/to/.libs/binary '. Sembra che ci sia più magia di "eco" e le variabili ambientali potrebbero rivelare. –

+0

@ PavelŠimerda: Ovviamente c'è più magia di così. Altrimenti, 'libtool' sarebbe inutile! Se vuoi eseguire il debug, basta eseguire 'libtool e gdb binary'. Non usare i file da '.libs' per qualcosa di serio. Ma se vuoi esplorare ... vai avanti, ma ricorda che libtool è molto, molto complesso. – rodrigo

Problemi correlati