2021-09-01 13:58:59 -05:00
Introduction
============
Seer - a gui frontend to gdb for Linux. (Ernie Pasveer epasveer@att .net)
This project is actively worked on. The aim is a simple, yet pleasing gui to gdb.
2023-04-30 16:24:42 -05:00
Please report any bugs or desired features to my email or create a [task ](https://github.com/epasveer/seer/issues ) in my
2022-10-07 00:15:12 -04:00
GitHub project page.
2021-09-01 13:58:59 -05:00
2021-09-04 17:02:25 -05:00
2024-03-01 19:05:19 -05:00
Installation
2021-09-04 11:40:46 -05:00
============
2024-03-01 19:26:03 -05:00
2024-03-01 19:05:19 -05:00
Seer can be installed either from a package manager or from source.
> [!NOTE]
2024-03-01 19:21:56 -05:00
> Make sure the requirements are met before installing.
2021-09-04 11:40:46 -05:00
2024-03-01 19:05:19 -05:00
Requirements
---------
2022-10-07 00:15:12 -04:00
* Linux
* C++17
2024-03-01 19:05:19 -05:00
* gdb with "mi" interpreter (check by running: `gdb --interpreter=mi` )
2025-04-28 11:50:14 -05:00
* CMake (3.5.0 or newer)
2023-05-16 15:54:32 -05:00
* QT6
2023-06-03 11:16:43 -05:00
* When building Seer from source, you will need the QT6 "devel" packages installed on your system for your distribution.
2023-06-03 11:32:11 -05:00
* Core
* Gui
* Widgets
* PrintSupport
* Charts
* Svg
* Qt6 build instructions are here: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
2023-05-16 15:54:32 -05:00
2023-06-03 11:16:43 -05:00
* QT5
2024-02-18 13:06:08 -06:00
* **Seer no longer compiles with Qt5.** The 2.3 source tree is the last one that does.
2023-06-03 11:16:43 -05:00
* Qt5 build instructions are here: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
2021-09-01 13:58:59 -05:00
2024-03-01 19:05:19 -05:00
Install from package
---------
2024-03-01 19:09:49 -05:00
Available through the following package managers:
2024-03-01 19:19:44 -05:00
### Pamac (Manjaro)
2025-12-22 10:03:00 -06:00
$ pamac install seer
2024-03-01 19:05:19 -05:00
2024-08-06 17:06:56 -03:00
### zypper (openSUSE Tumbleweed)
2025-12-22 10:03:00 -06:00
$ zypper install seergdb
### Flathub
Flathub website. [Here ](https://flathub.org/en/apps/io.github.epasveer.seer )
$ flatpak install flathub io.github.epasveer.seer
2024-08-06 17:06:56 -03:00
2025-12-11 15:27:05 -06:00
### Flatpak
2026-03-07 02:02:43 +01:00
Beta Seer versions. [Seer's release page ](https://github.com/epasveer/seer/releases/tag/flatpak-latest ) on github.
**Important ** : `flatpak-spawn --host` , needed in `GDB Launcher` to run gdb. See https://github.com/epasveer/seer/issues/377#issuecomment -3620844808.
Download ```seer.flatpak` ``. Install it:
2025-12-11 15:27:05 -06:00
2025-12-22 10:03:00 -06:00
$ flatpak install -y --bundle --user seer.flatpak
2025-12-11 15:27:05 -06:00
2024-03-01 19:05:19 -05:00
Install from source
---------
2024-03-01 19:30:22 -05:00
(Recommended) Seer can be built with Qt6 by following the instructions below.
2024-03-01 19:05:19 -05:00
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
2024-03-01 19:30:22 -05:00
It can still be built with Qt5, for the time being by following the instructions below.
2024-03-01 19:26:03 -05:00
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
2024-03-01 19:05:19 -05:00
2023-04-23 12:53:46 -05:00
NEWS
2022-08-30 18:23:08 -05:00
====
2023-04-29 09:06:41 -05:00
Check out [Seer's Wiki page](https://github.com/epasveer/seer/wiki) on github.
2023-04-23 12:53:46 -05:00
2023-06-03 11:16:43 -05:00
* Version v1.17 will be the last Qt5 release.
2023-06-03 11:32:11 -05:00
* The next release will be v2.0 and will be Qt6 based. However, for the time being, it's still able to be compiled with Qt5.
2023-06-03 11:16:43 -05:00
* If you want the latest stable Qt5 source, grab v1.17 from here: https://github.com/epasveer/seer/releases/tag/v1.17
2022-08-30 18:23:08 -05:00
2021-09-01 13:58:59 -05:00
2026-03-07 09:59:20 -06:00
Starting Seer
=============
Seer is meant to easily start the program to debug from the command line. gdb has multiple
methods for debugging a program. So Seer naturally does too.
Go to the Wiki to see all the ways to run Seer.
https://github.com/epasveer/seer/wiki/Starting-Seer
2021-09-01 13:58:59 -05:00
GUI overview
============
2021-09-04 17:02:25 -05:00
Examples of the various Seer views and dialogs.
2021-09-01 13:58:59 -05:00
2021-09-04 11:40:46 -05:00
Main View
---------
2021-09-01 13:58:59 -05:00
2023-03-07 14:34:23 +01:00
The main view for Seer looks like this:
2021-09-04 11:43:08 -05:00

2021-09-01 13:58:59 -05:00
2022-10-07 00:15:12 -04:00
* Source/Function/Types/Variables/Libraries
* The list of source/header files that were used in the program.
* Search for Functions, Types, and Static Variables.
Dobule clicking will open the source file.
* The list of shared libraries referenced by the program.
2023-03-07 14:34:23 +01:00
* The list of source/header files can be searched. This will "shrink" the list of files shown.
2022-10-07 00:15:12 -04:00
* Double clicking on a file will open it in the Code Manager.
* Variable/Register Info
* Show variable and register values.
* "Logger" - log the value of a variable. Manually enter it or double click on the variable in the file
that is opened in the code manager.
2023-03-07 14:34:23 +01:00
* "Tracker" - create a list of variables to show the value for whenever gdb reaches a stopping point
(step, next, finish, etc.). When the stopping point is reached, all variables in the list will show
2022-10-07 00:15:12 -04:00
their potentially new value.
2023-03-07 14:34:23 +01:00
* "Registers" - show the values of all cpu registers.
2022-10-07 00:15:12 -04:00
* Code Manager.
* The large area of the middle part of the Seer gui.
* Source files are opened in this view.
* Text in a file can be seached for with ^F.
* Variables can be added to the "Logger" by double clicking the variable name.
Double click with CTLR key pressed will prepend variable with "*".
Double click with SHIFT key pressed will prepend variable with "&".
Double click with CTRL+SHIFT key pressed will prepend variable with "*&".
2023-03-07 14:34:23 +01:00
* Variables can be added to the "Tracker" by selecting the variable name and RMB and select
2022-10-07 00:15:12 -04:00
"Add variable to Tracker".
2023-03-07 14:34:23 +01:00
* Variables can be added to the "Memory Visualizer" by selecting the variable name and RMB and select
2022-10-07 00:15:12 -04:00
"Add variable to Memory Visualizer".
* A breakpoint/printpoint can be created by RMB on a specific line.
* Can execute to a specific line by RMB on a specific line.
* Tabs in this view can be detached by double-clicking a tab.
* Breakpoints, Watchpoints, Catchpoints, Printpoints, manual gdb commands, and logs.
* The area below the Code Manager.
* Manual commands. Manually enter a gdb or gdbmi command.
The commands are remembered for the next Seer use.
* Breakpoint manager. Create and manage breakpoints.
* Watchpoint manager. Create and manage watchpoints.
A watchpoint monitors when a variable is accessed (read, write, read/write).
* Catchpoint manager. Create and manage catchpoints.
A catchpoint stops execution on a C++ throw/rethrow/catch call.
* Printpoint manager. Create and manage printpoints.
A printpoint is like a breakpoint but it allows you to print variables at
that printpoint. See gdb's 'dprintf' call.
* GDB output. A log of any output from the gdb program itself.
* Seer output. A log of any output from the Seer program itself. As diagnostics.
* Tabs in this view can be detached by double-clicking a tab.
* Stack frame information.
* Stack frame list. A frame can be double clicked to change the scope (the current function).
* Stack frame arguments. For each frame, print the arguments passed to each function.
* Stack locals. For the current function, print the values of the local variables.
* Thread information.
* Thread ids. A list of all threads. Double click on a thread id to change the scope (the current thread).
* Thread frames. For each thread, list its stack frames.
2021-09-01 13:58:59 -05:00
2022-10-09 15:36:42 -05:00
* Supports Gdb's Reverse Debugging mode.
* Turn instruction recording on or off.
* Set playback direction to forward or reverse.
2021-09-04 11:17:09 -05:00
Open Dialog
2021-09-04 11:40:46 -05:00
-----------
2021-09-04 11:17:09 -05:00
2023-03-07 14:34:23 +01:00
When the open executable dialog is invoked, it looks like this:
2021-09-04 11:17:09 -05:00

2021-09-04 11:20:07 -05:00
Seer Console
2021-09-04 11:40:46 -05:00
------------
2021-09-04 11:20:07 -05:00
2023-03-07 14:34:23 +01:00
All text output from the executable will go to the Seer console. Text input for the executable can be entered via the console too.
2021-09-04 11:20:07 -05:00

2021-09-04 11:17:09 -05:00
2022-07-03 14:05:48 -05:00
Assembly View
-------------
2023-03-07 14:34:23 +01:00
Normally Seer will just show the source code as tabs in the Code Manager. The program's assembly can also be show as a tab.
2022-07-03 14:05:48 -05:00
2023-03-07 14:34:23 +01:00
Select "View->Assembly View" and an extra tab will be shown alongside the source code tabs that shows the current assembly being executed. Here is an example.
2022-07-03 14:05:48 -05:00

2023-03-07 14:34:23 +01:00
Like the source code tabs, breakpoints can be set in the assembly tab. The current instruction is highlighted.
2022-07-03 14:05:48 -05:00
Double-clicking on entries in the "Breakpoints" tab and the "Stack frames" tab will show the assembly for those addresses.
There are "Nexti" and "Stepi" hot-keys, as defined by your config settings. Normally "Ctrl+F5" and "CTRL+F6".
Using "^F" in the assembly tab will show a powerful search bar.
**The assembly feature in Seer is new. Feel free to suggest changes/features.**
2021-09-04 11:40:46 -05:00
Memory Visualizer
-----------------
When looking at the contents of raw memory in the Memory Visualizer, it looks like this :
2022-05-27 18:15:05 -05:00
Memory | Disassembly
--- | ---
 | 
2021-09-04 11:40:46 -05:00
2022-03-24 15:06:34 -05:00
Array Visualizer
-----------------
2022-05-31 18:10:53 -05:00
When looking at the contents of arrays in the Array Visualizer, it looks like this :
2022-05-31 18:09:12 -05:00
Normal | Spline | Scatter
--- | --- | ---
2022-05-31 18:11:28 -05:00
 |  | 
2022-03-24 15:06:34 -05:00
2022-06-06 11:46:40 -05:00
Two arrays can be used as an X-Y plot. For example, this simple 'points' array forms the X-Y outline of a shape.
2022-06-06 11:43:21 -05:00
` ``
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
` ``
X values | Y values | XY Values
--- | --- | ---
 |  | 
2022-08-08 18:47:13 -05:00
Struct Visualizer
-----------------
When looking at the contents of a C/C++ struct or a C++ class in the Struct Visualizer, it looks like this.
2022-12-26 11:11:06 -06:00
This example shows the contents of "*this" for the current C++ class that Seer is in. All structure members
that are basic types can be edited.
2022-08-08 18:47:13 -05:00

2022-12-26 11:11:06 -06:00
There is also a **Basic Struct Visualizer ** that is more light weight, but can not follow pointers and can not
be edited.
Image Visualizer
-----------------
When looking at the contents of raw memory that is an image, the Image Visualizer can be used.

2021-09-04 17:02:25 -05:00
2023-03-04 10:12:06 -06:00
2021-09-01 13:58:59 -05:00
Support/Contact
===============
2023-04-30 16:24:42 -05:00
Send an email to epasveer@att .net for any bugs or features. Or create a [task ](https://github.com/epasveer/seer/issues )
2022-10-07 00:15:12 -04:00
in my GitHub project page.
2021-09-01 13:58:59 -05:00
2026-03-07 09:51:47 -06:00
Stargazers
==========
2026-03-07 09:59:20 -06:00
It's a wonderful world.

2026-03-07 09:51:47 -06:00