Chcę wydrukować całą długość łańcucha C w GDB. Domyślnie jest on skracany, jak zmusić GDB do wydrukowania całego łańcucha?
376
set print elements 0
set print elements
number-of-elements
Ustaw limit liczby elementów drukowanych przez GDB. Jeśli GDB drukuje dużą tablicę, przestaje drukować po wydrukowaniu liczby elementów ustawionych przez set print elements
polecenie. Limit ten dotyczy również wyświetlania ciągów. Po uruchomieniu GDB limit ten wynosi 200. Ustawienie liczby elementów na zero oznacza, że drukowanie jest nieograniczone .
Tak długo, jak twój program jest w rozsądnym stanie, możesz również
call (void)puts(your_string)
wydrukować go na standardowe wyjście. Ta sama zasada dotyczy wszystkich funkcji dostępnych dla debuggera.źródło
Istnieje trzecia opcja: polecenie x, która pozwala ustawić inny limit dla konkretnego polecenia zamiast zmiany ustawienia globalnego. Aby wydrukować pierwsze 300 znaków ciągu, możesz użyć
x/300s your_string
. Dane wyjściowe mogą być nieco trudniejsze do odczytania. Na przykład wydrukowanie zapytania SQL powoduje:źródło
x
!printf
Polecenie wydrukowania kompletne ciągi:źródło
set print elements nnn
limitu i nie wydrukuje całego łańcucha, chyba że to zrobiszset print elements 0
.Aby go ukończyć:
Musisz podać długość, ale możesz zmienić reprezentację tego ciągu:
Może to być przydatne, jeśli chcesz debugować według ich wartości
źródło
Używanie
set elements ...
nie zawsze jest najlepszym sposobem. Przydałoby się, gdyby były wyraźneset string-elements ...
.Używam tych funkcji w moim .gdbinit:
Ostrzeżenia:
źródło