Próbuję zrozumieć, jak działa określona biblioteka. Przygotowałem go z dodanymi książkami i wszystko jest świetne. Teraz chcę zatrzymać przykładowy program w czasie wykonywania, aby spojrzeć na stos wywołań, ale nie jestem w stanie wymyślić, jak to zrobić z gdb. Funkcja, którą chcę włamać, znajduje się w udostępnionej bibliotece. Sprawdziłem previous question tutaj na SO, ale podejście to nie działa dla mnie. Dany język to C++. Podjęto próbę podania nazwy pliku i numeru linii, ale gdb nie chce tego zrozumieć, wyświetla jedynie pliki źródłowe z aplikacji demonstracyjnej.Debugowanie/śledzenie wewnątrz biblioteki współdzielonej w czasie wykonywania?
Wszelkie sugestie?
Tak, ale upewnij się, że skompilowany biblioteka z -g iz wyłączonymi optymalizacjami! – Alex
Niestety to nie pomogło. Funkcja nadal nie jest widoczna, nawet z głównego. Czy jest coś, co mogę dodać do kodu, aby spowodować zatrzymanie wykonywania i wrzucenie do debuggera? – EightyEight
@EightyEight: Hmm, to działa dla mnie. Czy biblioteka, którą próbujesz debugować, może być ładowana dynamicznie przez dlopen()? To może wyjaśnić, dlaczego nadal nie jest to widoczne. W takim przypadku możesz ustawić początkowy punkt przerwania po wywołaniu biblioteki dlopen dla biblioteki docelowej, a następnie ustawić ostateczny punkt przerwania. Wygląda na to, że powinien istnieć prostszy sposób; Będę dalej szukać. –