Czy jest możliwe, że mogę wyświetlić numer linii i nazwę pliku (dla mojego programu działającego z ltrace/strace) wraz z informacjami o wywołaniu biblioteki/wywołaniu systemowym.
Na przykład:
code section :: ptr = malloc(sizeof(int)*5); (file:code.c, line:21)
Ltrace lub jakiekolwiek inne narzędzie: malloc(20) :: code.c::21
Wypróbowałem wszystkie opcje ltrace/strace, ale nie mogę znaleźć sposobu na uzyskanie tych informacji.
Jeśli nie jest to możliwe przez ltrace/strace, czy mamy jakąkolwiek opcję równoległego narzędzia dla GNU/Linuksa?
3 odpowiedzi
Możesz być w stanie użyć opcji -i
(aby wyprowadzić wskaźnik instrukcji w momencie wywołania) w strace
i ltrace
, w połączeniu z addr2line
, aby rozwiązać wywołania do linii kodu.
Nie To niemożliwe. Dlaczego nie używasz do tego celu gdb?
Kiedy kompilujesz aplikację za pomocą gcc, użyj flag -ggdb, aby uzyskać informacje o debugerze do swojego programu, a następnie uruchom go z gdb lub równoważnym interfejsem (ddd lub podobnym)
Oto krótki podręcznik gdb, który może ci trochę pomóc. http://www.cs.cmu.edu/~gilpin/tutorial/
Możesz użyć strace-plus, który może zbierać ślady stosu powiązane z każdym wywołaniem systemowym. http://code.google.com/p/strace-plus/
Podobne pytania
Nowe pytania
c
C jest językiem programowania ogólnego przeznaczenia, używanym do programowania systemów (system operacyjny i systemy wbudowane), bibliotek, gier i wielu platform. Ten znacznik powinien być używany w przypadku ogólnych pytań dotyczących języka C, zgodnie z definicją w standardzie ISO 9899 (najnowsza wersja 9899: 2018, chyba że określono inaczej - również oznaczanie żądań dotyczących wersji za pomocą c89, c99, c11 itd.). C różni się od C ++ i nie należy go łączyć ze znacznikiem C ++ bez racjonalnego powodu.
strace
, skoro wskaźnik instrukcji będzie w libc? Potrzebujesz kilku poziomów śledzenia wstecz, aby było to przydatne...ltrace
, ale nie mogłem znaleźć odpowiedniego sformułowania. Jest to jednak najbliższy wynik ltrace/strace.-S
, aby wyświetlić wywołania systemowe, a także wywołania biblioteki