Как выделить и покрасить вывод gdb во время интерактивной отладки?



пожалуйста, не отвечайте Я должен использовать ddd, nemiver, emacs, vim или любой другой интерфейс, я просто предпочитаю gdb как есть, но хотел бы видеть его выход с некоторыми цветами терминала.

880   10  

10 ответов:

.gdbinit

вы можете настроить ваш ~/.gdbinit цветов. Вы можете использовать маммоны .gdbinit здесь:

https://github.com/gdbinit/gdbinit

вы можете настроить его так, как вам хотелось бы. Я нашел это благодаря это так ответ. Вот вид вывода, который вы можете получить:

.gdbinit

репозиторий GitHub также доступен: https://github.com/gdbinit/Gdbinit

на боковой ноте, та же идея была также применяется к lldb.

приборная панель GDB

Следуя той же концепции, GDB Dashboard обеспечивает модульный визуальный интерфейс для GDB в Python.

GDB Dashboard

(ничтожным)Уокер

другой подобный проект использует поддержку Python GDB для обеспечения большей расширяемости, поэтому это стоит выезд:https://github.com/dholm/voidwalker

@dholm также предоставляет свой собственный .gdbinit вдохновлен предыдущим.

(void)walker

pwndbg

некоторые проекты предоставляют набор полезных функций, в том числе улучшенный дисплей. Это относится к педа или pwndbg. Последний дает следующее описание:

замена педа. В духе нашего доброго друга windbg,pwndbg произносится pwnd-bag.

  • скорость
  • устойчивость
  • код

он предоставляет команды для поддержки отладки и разработки эксплойтов, аналогичные тем, что есть в PEDA, и лучшего отображения (хотя это не является основным направлением проекта). Программное обеспечение все еще находится в стадии разработки, и не был должным образом освобожден еще.

pwndbg

Вольтрон

The проект описание государства:

Voltron-это расширяемый интерфейс отладчика для хакеров. Это позволяет присоедините к отладчику служебные представления, запущенные в других терминалах (LLDB или GDB), отображение полезной информации, такой как разборка, стек содержание, регистровые значения и т. д., все еще давая вам то же самое отладчик командной строки вы привыкли к.

вы можете изменить свой .gdbinit для автоматической интеграции. Однако сам дисплей находится за пределами GDB (например, в tmux split).

voltron

ФГОС

ФГОС это еще один вариант, и он описывается как:

оно направлен быть использованным главным образом эксплуататорами и обратн-инженерами, к предоставление дополнительных функций GDB с помощью API Python для оказания помощи в процессе динамического анализа и разработки эксплойтов.

GEF

это не цвета, но рассмотрим gdb текст gui. Это имеет огромное значение для того, насколько полезен gdb.

вы можете запустить его с:

gdb -tui executable.out

скриншоты:

enter image description here

Как вы можете видеть, основные функции:

  • показывает, на какой линии источника мы находимся и окружающие линии
  • показывает точки останова

Я знаю, что вы не хотели фронтэнд. Но как насчет cgdb это очень близко к GDB, это textmode, но имеет исходное окно выше с подсветкой синтаксиса в коде.

возможно значительно увеличить появляется gdb через пользу цветов. Это делается с помощью любого из следующих методов:

  1. раскрашенная подсказка через "установить подсказку". Например, сделайте подсказку жирным и красным:set prompt 3[1;31m(gdb) 3[m
  2. раскрашенные команды через крючки
  3. цветная подсветка синтаксиса команды "список".

все примеры доступны в следующих сообщениях блога, написанных Майклом Келлехер:

"украсьте GDB", 12 мая 2010 (через archive.org)

"экспериментальная подсветка синтаксиса GDB", 15 мая 2010 (через archive.org)

#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 3[0m
end 
document re
Restore colorscheme
end 

Предупреждение: Глючит. Нет поддержки TUI, "пользовательский режим" Хак.

нашел основную часть здесь и немного изменил его. Нужно выделить, c++filt. Если цвета перепутались, выполните команду re.

cgdb намного лучше, чем gdb -tui

Я хотел бы выделить следующее: подчеркните строки трассировки стека, которые принадлежат моим исходным файлам (а не библиотекам).

решение было использовать gdb-python (на MSYS; на Linux обычно gdb поставляется с Python встроенный уже?), крюк backtrace используйте

python stack_trace = gdb.execute('backtrace', False, True')

затем процесс stack_trace С помощью регулярных выражений Python и распечатайте их. Жирный и другие цвета достигаются с помощью такой функции:

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)

аккуратно, я только что нашел этот хак с помощью colout:https://github.com/nojhan/colout/blob/master/colout/example.gdbinit

before - after

еще одна хорошая комбинация цветов дается эта конфигурация. Это делает проверку обратных следов намного проще. Чтобы использовать его, просто сохраните этот файл как ~/.gdbinit и запустить gdb нормально

вы можете получить любые цвета, которые вы хотите;

# gdb
(gdb) shell echo -en '\E[47;34m'"3[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal

Comments

    Ничего не найдено.