2012-06-15 14 views
5

Estoy tratando de ver el código fuente de Wireshark para entender el análisis de protocolo, pero encontré que cuando uso gdb ./wireshark, cuando presione Ctrl + C y establezca un punto de interrupción, luego escriba C, el proceso muere. Quiero saber qué hace libtool para hacer posible la depuración de GDB.por qué debo usar libtool --mode == ejecutar gdb wireshark para permitir la depuración wireshark

ya he leído man libtool y dice libtool es una herramienta que sea fácil de usar todo tipo de .a o .o mediante una interfaz sencilla, pero no sé cuál es la clave para hacer posible con gdb wireshark libtool.

Respuesta

5

Cuando utiliza libtool para crear un programa, manejará todas las dificultades y particularidades del uso de bibliotecas compartidas en su plataforma.

Una de las dificultades es la depuración, porque cuando se depura desea cargar las bibliotecas compartidas que están no instaladas en el sistema (solo están compiladas). Entonces, cuando libtool construye un ejecutable, lo moverá a un directorio oculto (.libs) y generalmente colocará un script o similar con el mismo nombre donde puede verlo. Este script hará toda la magia para ejecutar el programa correcto con las bibliotecas correctas.

Pero, obviamente, no se puede depurar una secuencia de comandos con gdb! Por lo tanto, con el fin de pasar los parámetros correctos para gdb para que sea capaz de depurar el programa adecuado con las bibliotecas adecuadas, usted tiene que ejecutar el comando:

$ libtool --mode=execute gdb ./wireshark 

Se puede ver lo que hace ejecutando:

$ libtool --mode=execute echo ./wireshark 

simplemente no lo utiliza los archivos de .libs directamente: utilice siempre libtool o los guiones de envoltura.

+0

gracias :) es muy útil –

+0

Eso no funciona. Intenté 'libtool e echo binary' en un directorio e imprimió'/path/to/.libs/binary' ejecutándolo directamente, no da el resultado esperado, ni 'libtool e /path/to/.libs/binary '. Parece haber más magia que 'echo' y las variables de entorno podrían revelar. –

+0

@ PavelŠimerda: Por supuesto que hay más magia que eso. Si no, 'libtool' no serviría de nada! Si quiere depurar simplemente haga 'libtool e gdb binary'. No use los archivos de '.libs' para nada serio. Pero si quieres explorar ... adelante, pero ten en cuenta que libtool es muy, muy complejo. – rodrigo

Cuestiones relacionadas