Właśnie debugowałem program w gdb i jakoś znalazłem nową funkcję, której nigdy wcześniej nie widziałem, ani nawet o niej nie słyszałem, podzielony widok, w którym mogę zobaczyć i przeglądać kod oprócz wydawania poleceń:
Co to jest? Co zrobiłem, a dokładniej, jak mogę ponownie uzyskać ten tryb podzielonego ekranu? Czy jest jakaś nazwa tego trybu, czy gdzieś mogę przeczytać o tym, jak z niego korzystać?
Odpowiedzi:
Nazywa się TUI (bez żartów). Zacznij na przykład od
gdbtui
lubgdb -tui
...źródło
layout next
po uruchomieniugdb
normalnieMożesz go aktywować dynamicznie, naciskając ctrl+ xi ctrl+ a.
źródło
Istnieją dwa warianty tego.
Naciśnij
CTRL
X
razem, a następnie1
Naciśnij razem klawisz „CTRL” „X”, a następnie „2”
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
Zrzut ekranu widoku z kodem i montażem.
Sprawdź także ten niesamowity projekt Github.
źródło
Możesz również uruchomić go z powłoki gdb za pomocą polecenia „-” (myślnik). Nie wiem jednak, jak dynamicznie go wyłączyć.
źródło
Pulpit nawigacyjny GDB
https://github.com/cyrus-and/gdb-dashboard
Pulpit nawigacyjny GDB korzysta z oficjalnego API GDB Python i wyświetla żądane informacje, gdy GDB zatrzymuje się, np. Po a
next
, tak jak natywnedisplay
polecenie .W porównaniu z TUI:
bardziej wytrzymały, ponieważ po prostu drukuje na standardowe wyjście zamiast ustawiać powłokę w bardziej magicznym stanie przekleństw, np .:
vi
tryb w.inputrc
powoduje problemy: /superuser/180512/how-to-turn-off-gdb-tui/927728#927728wysoce konfigurowalny z Pythona: możesz wybrać, co chcesz wyprowadzić i jak duża jest każda sekcja w zależności od tego, co debugujesz.
Najbardziej przydatne widoki są już zaimplementowane: źródło, asembler, rejestry, stos, pamięć, wątki, wyrażenia ... ale powinno być łatwe do rozszerzenia o wszelkie informacje, które są ujawniane w GDB Python API.
TUI pozwala tylko na pokazanie dwóch źródeł, asemblera i rejestrów i to wszystko. Chyba że chcesz oczywiście zmodyfikować jego kod źródłowy w C ;-)
Uważam, że GDB powinien być dostarczany z taką konfiguracją po wyjęciu z pudełka i domyślnie włączony, przyciągnąłby w ten sposób znacznie więcej użytkowników.
Aha, i główny programista, Andrea Cardaci , był bardzo responsywny i niesamowity. Wielkie uznanie.
Zobacz też: Jak podświetlić i pokolorować wyjście gdb podczas debugowania interaktywnego?
źródło
Wpisz
layout
jako polecenie w gdb, a zostanie wyświetlone podzielone okno.źródło
Gdy GDB jest w trybie standardowym, użycie
win
spowoduje automatyczne przełączenie w tryb TUI.Inne polecenie w trybie TUI:
info win
Wypisz i podaj rozmiar wszystkich wyświetlanych okien.
focus next | prev | src | asm | regs | split
Ustaw fokus na nazwane okno. Polecenie to pozwala na zmianę aktywnego okna, dzięki czemu klawisze przewijania mogą zostać przeniesione do innego okna.
Przeczytaj tutaj, aby uzyskać dodatkową pomoc.
źródło
Istnieje również narzędzie interfejsu dla GDB o nazwie cgdb. Nawet z pewnym podkreśleniem koloru. „ESC”, aby przełączyć się do widoku kodu, „i”, aby przełączyć się z powrotem do gdb
źródło
tryb tui był wyraźnie zainspirowany emacsem - odkryłem go przypadkowo, kiedy uderzyłem ^ Xo, który przełącza między podzielonymi oknami w emacsie - czasami uderzam to z roztargnieniem, kiedy to, co powinienem robić, to przełączanie się na inny program. W każdym razie prowadzi to do kolejnej niewymienionej jeszcze funkcji, czyli przeniesienia kursora z okna kodu (w którym można przewijać) do wiersza poleceń lub odwrotnie za pomocą ^ Xo.
źródło