Jak podświetlić i pokolorować wyjście gdb podczas interaktywnego debugowania?
Proszę nie odpowiadać powinienem używać ddd, nemiver, emacs, vim, lub jakiegokolwiek innego front-endu, po prostu wolę gdb, jak to jest, ale chciałbym zobaczyć jego wyjście z niektórymi kolorami terminala.
10 answers
.gdbinit
Możesz dostosować swój ~/.gdbinit
, aby mieć kolory. Możesz użyć mammon ' s .gdbinit
, który jest dostępny tutaj:
Https://github.com/gdbinit/gdbinit
Możesz go modyfikować, ile chcesz. Znalazłem to dzięki to więc odpowiedź. Oto Rodzaj wyjścia, które możesz uzyskać:
Dostępne jest również repozytorium GitHub: https://github.com/gdbinit/Gdbinit
Na marginesie, ten sam pomysł był również zastosowane do lldb .
GDB Dashboard
GDB Dashboard (GDB Dashboard) - modułowy interfejs graficzny dla GDB w języku Python.(void)walker
Inny podobny projekt wykorzystuje obsługę Pythona GDB, aby zapewnić większą rozszerzalność, więc warto to sprawdzić: https://github.com/dholm/voidwalker
@dholm zapewnia również własne .gdbinit zainspirowany poprzednim jeden.
Pwndbg
Niektóre projekty zapewniają zestaw przydatnych funkcji, w tym ulepszony wyświetlacz. Tak jest w przypadku PEDA lub pwndbg. Ten ostatni daje następujący opis:
Zastąpienie PEDA. W duchu naszego dobrego przyjacielawindbg
,pwndbg
wymawia siępwnd-bag
.
- Speed
- odporność
- czysty kod
Dostarcza polecenia do obsługi debugowania i exploit rozwój podobny do tych z PEDA, i lepszy wyświetlacz (choć nie jest to główny cel projektu). Oprogramowanie jest nadal w fazie rozwoju i nie zostało jeszcze poprawnie wydane.
Voltron
Projekt Opis głosi:
Voltron to rozszerzalny interfejs debuggera dla hakerów. Pozwala na dołączanie widoków narzędzi działających w innych terminalach do debuggera (LLDB lub GDB), wyświetlając pomocne informacje takie jak demontaż, stos zawartości, wartości rejestru itp., jednocześnie dając ci to samo debugger CLI jesteś przyzwyczajony.
Możesz zmodyfikować swój .gdbinit
, aby automatycznie go zintegrować. Jednak sam wyświetlacz znajduje się poza GDB (np. w podziale tmux).
GEF
GEF jest inną opcją i jest opisana jako:
[[8]} ma być używany głównie przez wyzyskiwaczy i inżynierów odwrotnych, do zapewnić dodatkowe funkcje do GDB przy użyciu API Pythona do wspomagania podczas procesu dynamicznej analizy i rozwoju wykorzystania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 01:57:31
To nie Kolory, ale rozważmy grafikę graficzną gdb . To robi ogromną różnicę w tym, jak użyteczny jest gdb.
Możesz go uruchomić za pomocą:
gdb -tui executable.out
Zrzut ekranu:
Jak widać, główne cechy to:
- pokazuje, na jakiej linii źródła jesteśmy i otaczających linii
- pokazuje punkty przerwania
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-09 09:22:34
Wiem, że nie chciałeś frontendu. Ale może cgdb jest bardzo blisko gdb, jest to textmode, ale ma okno źródłowe powyżej z podświetleniem składni w kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-11 04:40:48
Możliwe jest znaczne zwiększenie wyglądu gdb poprzez użycie kolorów. Odbywa się to za pomocą jednej z następujących metod:
- Kolorowany znak zachęty za pomocą "Ustaw znak zachęty". Np. niech znak zachęty będzie pogrubiony i czerwony:
set prompt \033[1;31m(gdb) \033[m
- kolorowe polecenia za pomocą hooków
- kolorowe podświetlanie składni polecenia "list".
Wszystkie przykłady są dostępne na następujących blogach napisanych przez Michaela Kellehera:
"upiększyć GDB", 12 maja 2010 (przez archive.org)
"eksperymentalne podświetlanie składni GDB", 15 maja 2010 (via archive.org)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 09:42:51
#into .gdbinit
shell mkfifo /tmp/colorPipe
define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-disassemble
hookpost-list
end
define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end
define hookpost-list
set logging off
set logging redirect off
shell sleep 0.1s
end
define hook-quit
shell rm /tmp/colorPipe
end
define re
hookpost-disassemble
echo \033[0m
end
document re
Restore colorscheme
end
Ostrzeżenie: Buggy. Brak wsparcia TUI, "tryb użytkownika" hack.
Znalazłem główną część tutaj i trochę go zmodyfikowałem. Wymaga podświetlenia, C++filt. Jeśli Kolory się pomieszały, wydaj polecenie re.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-03 11:09:15
cgdb
jest znacznie lepszy niż gdb -tui
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 03:34:24
Chciałem podkreślić w następujący sposób: podkreślić linie śladu stosu, które należą do moich plików źródłowych (a nie bibliotek).
Rozwiązaniem było użycie gdb-python (na MSYS; na Linuksie typowo gdb
ma już wbudowany Python?), hook backtrace
, use
python stack_trace = gdb.execute('backtrace', False, True')
Następnie przetworzyć stack_trace
z wyrażeniami regularnymi Pythona i wydrukować je. Pogrubienie i inne kolory uzyskuje się za pomocą funkcji takiej jak ta:
def term_style(*v):
"""1 is bold, 30--37 are the 8 colours, but specifying bold may also
change the colour. 40--47 are background colours."""
return '\x1B['+';'.join(map(str, v))+'m'
#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-18 08:09:46
Fajne, właśnie znalazłem tego hacka używając colouta: https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-20 10:02:34
Kolejną dobrą kombinację kolorów daje Ta konfiguracja . Ułatwia to kontrolę ścieżek zwrotnych. Aby go użyć, po prostu zapisz ten plik jako ~/.gdbinit
i uruchom gdb normalnie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-13 15:31:35
Możesz uzyskać dowolne kolory;
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-14 04:16:07