Coding — Curses GDB
На моей памяти раскрашивали: терминал, страницы справочного руководства (man), использовали htop вместо top, но несправедливо была забыта одна программа, о которой хотелось бы напомнить - CGDB:
Рис.1. Приветствие CGDB
Curses GDB (CGDB) является надстройкой над популярным отладчиком GDB и предоставляет такие возможности, как:
Интерфейс CGDB разделен на два окна и строку состояния (см. рис. 2). Первое окно содержит исходный код и располагается сверху. Второе окно является окном GDB и расположено снизу. Строка состояния разделяет эти два окна.
Рис.2. Режимы CGDB и GDB
Принято считать, что если фокус находится в окне с исходным кодом (первом окне), то это режим CGDB, а если фокус в окне GDB (втором окне), то это режим GDB. Переключение между этими двумя режимами осуществляется при помощи клавиш «Esc» (режим CGDB) и «i» (режим GDB).
Работа в режиме GDB не должна вызывать трудностей, поэтому рассмотрим только некоторые из доступных команд в режиме CGDB:
Рис.3. Окно диалога
Также есть ряд конфигурационных команд, которые задаются аналогичному тому, как это делается в редакторе vi (vim), например, чтобы сменить стиль подсветки строки следует выполнить:
где style может принимать значения «short», «long» или «highlight» (см. рис.4).
Рис. 4. Три разных стиля выделения строки
Подводя некоторый итог сказанному, можно отметить, что использование CGDB дает дополнительный функционал, которого порой не хватает в GDB, хотя конечно же есть не все, например отображение области памяти или регистров в отдельном окне, но автор честно признается, что практически все время тратит на разработку интерфейса для взаимодействия CGDB и GDB: «...all of my time is spent developing the interface between CGDB and GDB. Once this is complete, the UI of CGDB will become much more polished. If you are a ncurses developer, and have spare time to work on this task, please contact me».
Ссылки:
Рис.1. Приветствие CGDB
Curses GDB (CGDB) является надстройкой над популярным отладчиком GDB и предоставляет такие возможности, как:
- подсветка исходного кода (C и Ada);
- визуальная установка breakpoint;
- использование горячих клавиш;
- осуществление поиска в окне с исходным кодом.
Интерфейс CGDB разделен на два окна и строку состояния (см. рис. 2). Первое окно содержит исходный код и располагается сверху. Второе окно является окном GDB и расположено снизу. Строка состояния разделяет эти два окна.
Рис.2. Режимы CGDB и GDB
Принято считать, что если фокус находится в окне с исходным кодом (первом окне), то это режим CGDB, а если фокус в окне GDB (втором окне), то это режим GDB. Переключение между этими двумя режимами осуществляется при помощи клавиш «Esc» (режим CGDB) и «i» (режим GDB).
Работа в режиме GDB не должна вызывать трудностей, поэтому рассмотрим только некоторые из доступных команд в режиме CGDB:
- i — перейти в режим GDB;
- up, down, left, right (k, j, h, l) — перейти на линию вверх, вниз, влево или вправо соответственно;
- gg, G — перейти в начало/конец файла;
- / — начать поиск с текущей позиции курсора;
- space (пробел) — установить breakpoint;
- F8, F10 — команды next и step;
- o — открыть окно диалога для выбора файла с исходным кодом (см. рис.3).
Рис.3. Окно диалога
Также есть ряд конфигурационных команд, которые задаются аналогичному тому, как это делается в редакторе vi (vim), например, чтобы сменить стиль подсветки строки следует выполнить:
:set arrowstyle=style
где style может принимать значения «short», «long» или «highlight» (см. рис.4).
Рис. 4. Три разных стиля выделения строки
Подводя некоторый итог сказанному, можно отметить, что использование CGDB дает дополнительный функционал, которого порой не хватает в GDB, хотя конечно же есть не все, например отображение области памяти или регистров в отдельном окне, но автор честно признается, что практически все время тратит на разработку интерфейса для взаимодействия CGDB и GDB: «...all of my time is spent developing the interface between CGDB and GDB. Once this is complete, the UI of CGDB will become much more polished. If you are a ncurses developer, and have spare time to work on this task, please contact me».
Ссылки:
- сайт проекта CGDB;
- документация к CGDB в pdf;
- документация к GDB на русском в формате PostScript.