返回更新列表
新发布Sep 1, 2026

seer snap-latest

Seer - gdb 的 GUI 前端

分享

简介

Seer —— Linux 下 gdb 的图形化前端。(Ernie Pasveer [email protected]

本项目正在积极开发中。目标是打造一个简单而美观的 gdb 图形界面。

如有任何 Bug 或期望的功能,请发送邮件至我的邮箱,或在 GitHub 项目页面创建任务

安装

Seer 可以通过包管理器或从源码安装。

[!NOTE] 安装前请确保满足所有依赖要求。

依赖要求

通过包管理器安装

可通过以下包管理器获取:

Pamac(Manjaro)

$ pamac install seer

zypper(openSUSE Tumbleweed)

$ zypper install seergdb

Flathub

Flathub 网站。此处

$ flatpak install flathub io.github.epasveer.seer

Flatpak

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

Snap

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

Seer 旨在让你轻松地从命令行启动要调试的程序。gdb 有多种调试程序的方法,因此 Seer 自然也支持多种方式。

请前往 Wiki 查看运行 Seer 的所有方式。

https://github.com/epasveer/seer/wiki/Starting-Seer

GUI 概览

Seer 各种视图和对话框的示例。

主视图

Seer 的主视图如下所示:

  • 源码/函数/类型/变量/库

    • 程序中使用的源文件/头文件列表。
    • 搜索函数、类型和静态变量。 双击将打开源文件。
    • 程序引用的共享库列表。
    • 源文件/头文件列表可进行搜索。这将"缩减"显示的文件列表。
    • 双击文件将在代码管理器中打开。
  • 变量/寄存器信息

    • 显示变量和寄存器的值。
    • "记录器" - 记录变量的值。可手动输入,或双击代码管理器中打开的文件中的变量。
    • "跟踪器" - 创建变量列表,每当 gdb 到达停止点(step、next、finish 等)时显示其值。到达停止点时,列表中的所有变量将显示其可能的新值。
    • "寄存器" - 显示所有 CPU 寄存器的值。
  • 代码管理器。

    • Seer GUI 中间部分的大面积区域。
    • 源文件在此视图中打开。
    • 可使用 ^F 搜索文件中的文本。
    • 双击变量名可将变量添加到"记录器"。 按住 CTRL 键双击将在变量前添加 ""。 按住 SHIFT 键双击将在变量前添加 "&"。 按住 CTRL+SHIFT 键双击将在变量前添加 "&"。
    • 选中变量名后右键单击并选择"将变量添加到跟踪器",可将变量添加到"跟踪器"。
    • 选中变量名后右键单击并选择"将变量添加到内存可视化器",可将变量添加到"内存可视化器"。
    • 在特定行上右键单击可创建断点/打印点。
    • 在特定行上右键单击可执行到该行。
    • 双击此视图中的标签页可将其分离。
  • 断点、监视点、捕获点、打印点、手动 gdb 命令和日志。

    • 代码管理器下方的区域。
    • 手动命令。手动输入 gdb 或 gdbmi 命令。 命令会被记住,供下次使用 Seer 时使用。
    • 断点管理器。创建和管理断点。
    • 监视点管理器。创建和管理监视点。 监视点用于监视变量何时被访问(读、写、读/写)。
    • 捕获点管理器。创建和管理捕获点。 捕获点在 C++ throw/rethrow/catch 调用时停止执行。
    • 打印点管理器。创建和管理打印点。 打印点类似于断点,但允许你在该打印点打印变量。参见 gdb 的 'dprintf' 调用。
    • GDB 输出。gdb 程序本身输出的日志。
    • Seer 输出。Seer 程序本身输出的日志,作为诊断信息。
    • 双击此视图中的标签页可将其分离。
  • 栈帧信息。

    • 栈帧列表。双击帧可更改作用域(当前函数)。
    • 栈帧参数。对于每个帧,打印传递给每个函数的参数。
    • 栈局部变量。对于当前函数,打印局部变量的值。
  • 线程信息。

    • 线程 ID。所有线程的列表。双击线程 ID 可更改作用域(当前线程)。
    • 线程帧。对于每个线程,列出其栈帧。
  • 支持 Gdb 的反向调试模式。

    • 开启或关闭指令记录。
    • 将播放方向设置为向前或向后。

打开对话框

调用打开可执行文件对话框时,界面如下所示:

Seer 控制台

可执行文件的所有文本输出将发送到 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 项目页面创建任务

星标用户

这是一个美妙的世界。

分类