podzielony widok gdb z kodem


111

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ń:

Przepraszamy za zdjęcie, ale ttys nie mają zrzutów ekranu.

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ć?


2
Dla szybkiego odniesienia: Możesz wyjść z tego trybu używając dowolnego z Cx Ca, Cx a lub Cx A. 'Zobacz to pytanie .
Richard

Odpowiedzi:


95

Nazywa się TUI (bez żartów). Zacznij na przykład od gdbtuilub gdb -tui...


11
możesz również użyć layout nextpo uruchomieniu gdbnormalnie
khaverim

87

Możesz go aktywować dynamicznie, naciskając ctrl+ xi ctrl+ a.


dzięki @ user146043, wydaje się, że to jedyny sposób, jeśli używasz screen'a w tym samym czasie co ctrl-a, jest sposobem na zainicjowanie poleceń ekranowych!
olik79

Wygląda na to, że możesz też zamknąć to połączenie!
Nick Desaulniers



15

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 natywne displaypolecenie .

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 .:

  • wysoce 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 ;-)

wprowadź opis obrazu tutaj

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?


2
Nie ma wystarczająco dużo słów, aby opisać, jakie to niesamowite. Dzięki :)
unresolved_external

11

Wpisz layoutjako polecenie w gdb, a zostanie wyświetlone podzielone okno.


5

Gdy GDB jest w trybie standardowym, użycie winspowoduje 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.


2

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

cgdb


1

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.


Oczywiście większość programów z GNU ma emac, podobnie jak skróty klawiszowe, głównie ze względu na spójność. Wiem, że w bashu jest tryb vi, ale nie jest on wystarczająco dobry, jak tryb emacsa.
klaus
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.