Seer —— Linux 下 gdb 的图形化前端。(Ernie Pasveer [email protected])
本项目正在积极开发中。目标是打造一个简单而美观的 gdb 图形界面。
如有任何 Bug 或期望的功能,请发送邮件至我的邮箱,或在 GitHub 项目页面创建任务。
Seer 可以通过包管理器或从源码安装。
[!NOTE] 安装前请确保满足所有依赖要求。
Linux
C++17
支持 "mi" 解释器的 gdb(可通过运行 gdb --interpreter=mi 检查)
CMake(3.5.0 或更高版本)
QT6
QT5
可通过以下包管理器获取:
$ pamac install seer
$ zypper install seergdb
Flathub 网站。此处
$ flatpak install flathub io.github.epasveer.seer
Seer 测试版。GitHub 上的 Seer 发布页面。
重要提示:GDB Launcher 中运行 gdb 需要 flatpak-spawn --host。参见 https://github.com/epasveer/seer/issues/377#issuecomment-3620844808。
下载 seer.flatpak。然后安装:
$ flatpak install -y --bundle --user seer.flatpak
Seer 测试版。GitHub 上的 Seer 发布页面。
$ 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
请查看 GitHub 上的 Seer Wiki 页面。
Seer 旨在让你轻松地从命令行启动要调试的程序。gdb 有多种调试程序的方法,因此 Seer 自然也支持多种方式。
请前往 Wiki 查看运行 Seer 的所有方式。
https://github.com/epasveer/seer/wiki/Starting-Seer
Seer 各种视图和对话框的示例。
Seer 的主视图如下所示:

源码/函数/类型/变量/库
变量/寄存器信息
代码管理器。
断点、监视点、捕获点、打印点、手动 gdb 命令和日志。
栈帧信息。
线程信息。
支持 Gdb 的反向调试模式。
调用打开可执行文件对话框时,界面如下所示:

可执行文件的所有文本输出将发送到 Seer 控制台。也可通过控制台输入可执行文件的文本输入。

通常 Seer 仅在代码管理器中以标签页形式显示源代码。程序的汇编代码也可以标签页形式显示。
选择"视图->汇编视图",将在源代码标签页旁边显示一个额外的标签页,显示当前正在执行的汇编代码。示例如下。

与源代码标签页一样,可以在汇编标签页中设置断点。当前指令会高亮显示。
双击"断点"标签页和"栈帧"标签页中的条目,将显示这些地址对应的汇编代码。
根据你的配置设置,有"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++ 类的内容时,界面如下所示。 此示例显示了 Seer 当前所在的 C++ 类的 "*this" 内容。所有基本类型的结构体成员均可编辑。

还有一个基础结构体可视化器,它更轻量,但无法跟踪指针且不可编辑。
当查看作为图像的原始内存内容时,可使用图像可视化器。

如有任何 Bug 或功能需求,请发送邮件至 [email protected]。或在 GitHub 项目页面创建任务。
这是一个美妙的世界。