
seer snap-latest
Seer - графический интерфейс для gdb
Введение
Seer — графический интерфейс к gdb для Linux. (Ernie Pasveer [email protected])
Проект активно развивается. Цель — простой, но приятный графический интерфейс к gdb.
Пожалуйста, сообщайте обо всех ошибках или желаемых функциях на мою электронную почту или создайте задачу на странице моего проекта на GitHub.
Установка
Seer можно установить либо из менеджера пакетов, либо из исходного кода.
[!NOTE] Убедитесь, что требования выполнены, прежде чем устанавливать.
Требования
-
Linux
-
C++17
-
gdb с интерпретатором "mi" (проверьте, выполнив:
gdb --interpreter=mi) -
CMake (3.5.0 или новее)
-
QT6
- При сборке Seer из исходного кода вам потребуется установить пакеты QT6 "devel" для вашего дистрибутива.
- Core
- Gui
- Widgets
- PrintSupport
- Charts
- Svg
- Инструкции по сборке с Qt6 находятся здесь: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
- При сборке Seer из исходного кода вам потребуется установить пакеты QT6 "devel" для вашего дистрибутива.
-
QT5
- Seer больше не компилируется с Qt5. Дерево исходников 2.3 — последнее, которое это делает.
- Инструкции по сборке с Qt5 находятся здесь: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
Установка из пакета
Доступно через следующие менеджеры пакетов:
Pamac (Manjaro)
$ pamac install seer
zypper (openSUSE Tumbleweed)
$ zypper install seergdb
Flathub
Сайт Flathub. Здесь
$ flatpak install flathub io.github.epasveer.seer
Flatpak
Бета-версии Seer. Страница релизов Seer на github.
Важно: flatpak-spawn --host, необходим в GDB Launcher для запуска gdb. См. https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.
Скачайте seer.flatpak. Установите его:
$ flatpak install -y --bundle --user seer.flatpak
Snap
Бета-версии Seer. Страница релизов Seer на github.
$ snap install seergdb_<version>.snap --dangerous
Установка из исходного кода
(Рекомендуется) Seer можно собрать с Qt6, следуя инструкциям ниже.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
На данный момент его всё ещё можно собрать с Qt5, следуя инструкциям ниже.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
НОВОСТИ
Ознакомьтесь со страницей Wiki проекта Seer на github.
- Версия v1.17 будет последним релизом для Qt5.
- Следующий релиз будет v2.0 и будет основан на Qt6. Однако на данный момент его всё ещё можно скомпилировать с Qt5.
- Если вам нужны последние стабильные исходники для Qt5, возьмите v1.17 отсюда: https://github.com/epasveer/seer/releases/tag/v1.17
Запуск Seer
Seer предназначен для лёгкого запуска отлаживаемой программы из командной строки. У gdb есть несколько способов отладки программы. Поэтому у Seer они тоже, естественно, есть.
Перейдите в Wiki, чтобы увидеть все способы запуска Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
Обзор графического интерфейса
Примеры различных представлений и диалогов Seer.
Главное представление
Главное представление Seer выглядит так:

-
Исходники/Функции/Типы/Переменные/Библиотеки
- Список исходных/заголовочных файлов, использованных в программе.
- Поиск функций, типов и статических переменных. Двойной щелчок откроет исходный файл.
- Список разделяемых библиотек, на которые ссылается программа.
- Список исходных/заголовочных файлов можно искать. Это "сократит" отображаемый список файлов.
- Двойной щелчок по файлу откроет его в менеджере кода.
-
Информация о переменных/регистрах
- Показывает значения переменных и регистров.
- "Logger" — логировать значение переменной. Введите его вручную или дважды щёлкните по переменной в файле, открытом в менеджере кода.
- "Tracker" — создать список переменных, значения которых нужно показывать всякий раз, когда gdb достигает точки остановки (step, next, finish и т. д.). Когда точка остановки достигнута, все переменные в списке покажут свои потенциально новые значения.
- "Registers" — показать значения всех регистров процессора.
-
Менеджер кода.
- Большая область в средней части интерфейса Seer.
- Исходные файлы открываются в этом представлении.
- Текст в файле можно искать с помощью ^F.
- Переменные можно добавить в "Logger", дважды щёлкнув по имени переменной. Двойной щелчок с зажатой клавишей CTRL добавит перед переменной "". Двойной щелчок с зажатой клавишей SHIFT добавит перед переменной "&". Двойной щелчок с зажатыми клавишами CTRL+SHIFT добавит перед переменной "&".
- Переменные можно добавить в "Tracker", выбрав имя переменной, нажав ПКМ и выбрав "Add variable to Tracker".
- Переменные можно добавить в "Memory Visualizer", выбрав имя переменной, нажав ПКМ и выбрав "Add variable to Memory Visualizer".
- Точку останова/точку печати можно создать, нажав ПКМ на конкретной строке.
- Можно выполнить до конкретной строки, нажав ПКМ на конкретной строке.
- Вкладки в этом представлении можно отсоединить, дважды щёлкнув по вкладке.
-
Точки останова, точки наблюдения, точки перехвата, точки печати, ручные команды gdb и журналы.
- Область под менеджером кода.
- Ручные команды. Вручную введите команду gdb или gdbmi. Команды запоминаются для следующего использования Seer.
- Менеджер точек останова. Создание точек останова и управление ими.
- Менеджер точек наблюдения. Создание точек наблюдения и управление ими. Точка наблюдения отслеживает, когда происходит доступ к переменной (чтение, запись, чтение/запись).
- Менеджер точек перехвата. Создание точек перехвата и управление ими. Точка перехвата останавливает выполнение при вызове throw/rethrow/catch в C++.
- Менеджер точек печати. Создание точек печати и управление ими. Точка печати похожа на точку останова, но позволяет печатать переменные в этой точке печати. См. вызов 'dprintf' в gdb.
- Вывод GDB. Журнал любого вывода самой программы gdb.
- Вывод Seer. Журнал любого вывода самой программы Seer. В качестве диагностики.
- Вкладки в этом представлении можно отсоединить, дважды щёлкнув по вкладке.
-
Информация о кадрах стека.
- Список кадров стека. Двойной щелчок по кадру позволяет изменить область видимости (текущую функцию).
- Аргументы кадров стека. Для каждого кадра вывести аргументы, переданные каждой функции.
- Локальные переменные стека. Для текущей функции вывести значения локальных переменных.
-
Информация о потоках.
- Идентификаторы потоков. Список всех потоков. Двойной щелчок по идентификатору потока позволяет изменить область видимости (текущий поток).
- Кадры потоков. Для каждого потока вывести его кадры стека.
-
Поддержка режима обратной отладки Gdb.
- Включение или выключение записи инструкций.
- Установка направления воспроизведения вперёд или назад.
Диалог открытия
При вызове диалога открытия исполняемого файла он выглядит так:

Консоль Seer
Весь текстовый вывод исполняемого файла будет направляться в консоль Seer. Ввод текста для исполняемого файла также можно осуществлять через консоль.

Представление ассемблера
Обычно Seer просто показывает исходный код как вкладки в менеджере кода. Ассемблер программы также можно показать как вкладку.
Выберите "View->Assembly View", и рядом с вкладками исходного кода появится дополнительная вкладка, показывающая текущий выполняемый ассемблер. Вот пример.

Как и во вкладках исходного кода, во вкладке ассемблера можно устанавливать точки останова. Текущая инструкция подсвечивается.
Двойной щелчок по записям во вкладке "Breakpoints" и вкладке "Stack frames" покажет ассемблер для этих адресов.
Есть горячие клавиши "Nexti" и "Stepi", определённые в ваших настройках конфигурации. Обычно "Ctrl+F5" и "CTRL+F6". Использование "^F" во вкладке ассемблера покажет мощную строку поиска.
Функция ассемблера в Seer новая. Не стесняйтесь предлагать изменения/функции.
Визуализатор памяти
При просмотре содержимого необработанной памяти в визуализаторе памяти это выглядит так :
| Память | Дизассемблер |
|---|---|
![]() | ![]() |
Визуализатор массивов
При просмотре содержимого массивов в визуализаторе массивов это выглядит так :
| Обычный | Сплайн | Точечный |
|---|---|---|
![]() | ![]() | ![]() |
Два массива можно использовать как график X-Y. Например, этот простой массив 'points' образует контур фигуры в координатах X-Y.
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
| Значения X | Значения Y | Значения XY |
|---|---|---|
![]() | ![]() | ![]() |
Визуализатор структур
При просмотре содержимого структуры C/C++ или класса C++ в визуализаторе структур это выглядит так. Этот пример показывает содержимое "*this" для текущего класса C++, в котором находится Seer. Все члены структуры, являющиеся базовыми типами, можно редактировать.

Также есть Basic Struct Visualizer, который более лёгкий, но не может следовать по указателям и не может быть отредактирован.
Визуализатор изображений
При просмотре содержимого необработанной памяти, являющейся изображением, можно использовать визуализатор изображений.

Поддержка/Контакты
Отправьте письмо на [email protected] по любым ошибкам или функциям. Или создайте задачу на странице моего проекта на GitHub.
Stargazers
Это прекрасный мир.







