2012-06-15 15 views
5

Próbuję wyświetlić kod źródłowy Wireshark, aby zrozumieć analizę protokołu, , ale znalazłem, że kiedy po prostu używam gdb ./wireshark, kiedy naciśnij Ctrl + C i ustaw punkt przerwania, a następnie wpisz C, proces umiera. Chcę wiedzieć, co robi libtool, aby umożliwić debugowanie GDB.Dlaczego muszę użyć libtool --mode == Wykonaj gdb Wireshark, aby umożliwić debugowanie wireshark

Już odczytać man libtool i mówi libtool jest narzędziem ułatwiają korzystać ze wszystkich rodzajów .a lub .o przez prosty interfejs, ale nie wiem, co jest kluczem do gdb wireshark możliwe z libtool.

Odpowiedz

5

Podczas korzystania z libtool do budowania programu, będzie on obsługiwał wszystkie trudności i szczególne cechy korzystania z bibliotek współdzielonych w twojej platformie.

Jedną z trudności jest debugowanie, ponieważ podczas debugowania chcesz załadować biblioteki współdzielone, które są nie zainstalowane w systemie (są po prostu skompilowane). Kiedy więc libtool tworzy plik wykonywalny, przenosi go do ukrytego katalogu (.libs) i zwykle umieszcza skrypt lub podobne z tą samą nazwą, gdzie można ją zobaczyć. Ten skrypt zrobi całą magię, aby uruchomić poprawny program z odpowiednimi bibliotekami.

Ale oczywiście nie można debugować skryptu z gdb! Tak więc, w celu przekazania poprawnych parametrów do gdb na to, aby być w stanie do debugowania odpowiedni program z odpowiednimi bibliotekami, trzeba uruchomić polecenie:

$ libtool --mode=execute gdb ./wireshark 

można zobaczyć, co robi, uruchamiając:

$ libtool --mode=execute echo ./wireshark 

Tylko nie używać plików bezpośrednio z .libs: stosować zawsze libtool lub skrypty owijki.

+0

dziękuję :) bardzo pomocne –

+0

To nie działa. Próbowałem 'libtool e echo binary' w katalogu i wydrukował, że'/path/to/.libs/binary' uruchamiając go bezpośrednio nie daje oczekiwanego rezultatu, ani też 'libtool e /path/to/.libs/binary '. Wydaje się, że jest więcej magii niż "echo" i zmienne środowiskowe mogą się ujawnić. –

+0

@ PavelŠimerda: Oczywiście jest więcej magii niż to. Jeśli nie, "libtool" byłoby bezcelowe! Jeśli chcesz debugować, po prostu wykonaj 'libtool e gdb binary'. Nie używaj plików z '.libs' na coś poważnego. Ale jeśli chcesz odkryć ... śmiało, ale pamiętaj, że libtool jest bardzo, bardzo złożony. – rodrigo