Mam problem z debugowaniem aplikacji w C++ za pomocą zdalnej sesji GDB, która ma dużą bazę kodu i dlatego zawiera (po skompilowaniu z flagami "-O2", "-g", "-DNDEBUG" ") duży plik z informacjami debugowania (1,1 Gb).W jaki sposób GDB radzi sobie z dużymi (> 1 GB) plikami debugowania?
Niestety, nie mogę po prostu używać częściowych tabel symboli podczas debugowania, ponieważ cały czas debugger pomija część aplikacji i nie jestem w stanie ustawić tam punktów przerwania i zobaczyć kod podczas debugowania.
Jako rozwiązanie tego problemu, mogę wykonać następujące polecenie po mam przyłączone do systemu TARGET:
symbol-file -readnow [path-to-file-with-debugging-info]
ta rozszerza pełne tablice symboli. Ale w tym przypadku GDB po prostu zabrakło pamięci uderzając 13 Gb lub nawet więcej pamięci RAM (podczas gdy mam tylko 16 Gb dostępne na moim komputerze). Ten problem jest już wymieniony w GDB Wiki i jest znany.
Moje pytanie brzmi: jak sobie radzić z GDB w tym przypadku, kiedy potrzebuję pełnych tablic symboli, ale GDB wymaga ogromnej ilości pamięci, aby ją rozwinąć?
Z góry dziękuję!
Częściowe tabele symboli to optymalizacja gdb. Jeśli nie działają, to jest to błąd gdb, który powinieneś złożyć. Normalni użytkownicy nigdy nie powinni potrzebować '-readnow' - jest to raczej opcja dewelopera gdb i/lub obejście błędu. –