{"id":13441272,"url":"https://github.com/epasveer/seer","last_synced_at":"2025-05-14T01:02:58.706Z","repository":{"id":37006040,"uuid":"402099758","full_name":"epasveer/seer","owner":"epasveer","description":"Seer - a gui frontend to gdb","archived":false,"fork":false,"pushed_at":"2025-05-06T02:20:52.000Z","size":18407,"stargazers_count":3126,"open_issues_count":29,"forks_count":100,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-06T03:23:43.646Z","etag":null,"topics":["cpp","debug","debugger","debugger-gdb","debugger-visualizer","debugger-visualizers","debuggers","debugging","debugging-tool","debugging-tools","gdb","gdb-frontend","gdb-mi","gdb-ui","gdbserver","gnu-debugger","qt","qt5","qt6"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/epasveer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-09-01T14:55:02.000Z","updated_at":"2025-05-06T02:15:27.000Z","dependencies_parsed_at":"2023-10-05T05:53:49.359Z","dependency_job_id":"26ca410d-93c1-4605-8bde-bb6a0bf1d3f8","html_url":"https://github.com/epasveer/seer","commit_stats":{"total_commits":966,"total_committers":19,"mean_commits":50.8421052631579,"dds":0.03105590062111796,"last_synced_commit":"8a197599450e48ee4580267f2387cc07a842bb92"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epasveer%2Fseer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epasveer%2Fseer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epasveer%2Fseer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epasveer%2Fseer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epasveer","download_url":"https://codeload.github.com/epasveer/seer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254047995,"owners_count":22005832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","debug","debugger","debugger-gdb","debugger-visualizer","debugger-visualizers","debuggers","debugging","debugging-tool","debugging-tools","gdb","gdb-frontend","gdb-mi","gdb-ui","gdbserver","gnu-debugger","qt","qt5","qt6"],"created_at":"2024-07-31T03:01:31.873Z","updated_at":"2025-05-14T01:02:58.700Z","avatar_url":"https://github.com/epasveer.png","language":"C++","funding_links":[],"categories":["HarmonyOS","Software","C++","gdb"],"sub_categories":["Windows Manager","Trends","Example"],"readme":"Introduction\n============\n\nSeer - a gui frontend to gdb for Linux.   (Ernie Pasveer  epasveer@att.net)\n\nThis project is actively worked on. The aim is a simple, yet pleasing gui to gdb.\n\nPlease report any bugs or desired features to my email or create a [task](https://github.com/epasveer/seer/issues) in my\nGitHub project page.\n\n\nInstallation\n============\n \nSeer can be installed either from a package manager or from source.\n\u003e [!NOTE]\n\u003e  Make sure the requirements are met before installing.\n\nRequirements\n---------\n* Linux\n* C++17\n* gdb with \"mi\" interpreter (check by running: `gdb --interpreter=mi`)\n* CMake (3.5.0 or newer)\n* QT6\n   * When building Seer from source, you will need the QT6 \"devel\" packages installed on your system for your distribution.\n      * Core\n      * Gui\n      * Widgets\n      * PrintSupport\n      * Charts\n      * Svg\n   * Qt6 build instructions are here: https://github.com/epasveer/seer/wiki/Building-Seer---Qt6\n\n* QT5\n   * **Seer no longer compiles with Qt5.** The 2.3 source tree is the last one that does.\n   * Qt5 build instructions are here: https://github.com/epasveer/seer/wiki/Building-Seer---Qt5\n\nInstall from package\n---------\nAvailable through the following package managers:\n\n### Pamac (Manjaro)\n\n    pamac install seer\n\n### zypper (openSUSE Tumbleweed)\n\n    zypper install seergdb\n\nInstall from source\n---------\n(Recommended) Seer can be built with Qt6 by following the instructions below.\n\nhttps://github.com/epasveer/seer/wiki/Building-Seer---Qt6\n\nIt can still be built with Qt5, for the time being by following the instructions below.\n\nhttps://github.com/epasveer/seer/wiki/Building-Seer---Qt5\n\n\nNEWS\n====\n\nCheck out [Seer's Wiki page](https://github.com/epasveer/seer/wiki) on github.\n\n* Version v1.17 will be the last Qt5 release.\n* 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.\n* If you want the latest stable Qt5 source, grab v1.17 from here: https://github.com/epasveer/seer/releases/tag/v1.17\n\n\nGUI overview\n============\n\nExamples of the various Seer views and dialogs.\n\nMain View\n---------\n\nThe main view for Seer looks like this:\n![](images/mainview.png)\n\n* Source/Function/Types/Variables/Libraries\n    * The list of source/header files that were used in the program.\n    * Search for Functions, Types, and Static Variables.\n      Dobule clicking will open the source file.\n    * The list of shared libraries referenced by the program.\n    * The list of source/header files can be searched. This will \"shrink\" the list of files shown.\n    * Double clicking on a file will open it in the Code Manager.\n\n* Variable/Register Info\n    * Show variable and register values.\n    * \"Logger\" - log the value of a variable. Manually enter it or double click on the variable in the file\n      that is opened in the code manager.\n    * \"Tracker\" - create a list of variables to show the value for whenever gdb reaches a stopping point\n      (step, next, finish, etc.). When the stopping point is reached, all variables in the list will show\n      their potentially new value.\n    * \"Registers\" - show the values of all cpu registers.\n\n* Code Manager.\n    * The large area of the middle part of the Seer gui.\n    * Source files are opened in this view.\n    * Text in a file can be seached for with ^F.\n    * Variables can be added to the \"Logger\" by double clicking the variable name.\n      Double click with CTLR key pressed will prepend variable with \"*\".\n      Double click with SHIFT key pressed will prepend variable with \"\u0026\".\n      Double click with CTRL+SHIFT key pressed will prepend variable with \"*\u0026\".\n    * Variables can be added to the \"Tracker\" by selecting the variable name and RMB and select\n      \"Add variable to Tracker\".\n    * Variables can be added to the \"Memory Visualizer\" by selecting the variable name and RMB and select\n      \"Add variable to Memory Visualizer\".\n    * A breakpoint/printpoint can be created by RMB on a specific line.\n    * Can execute to a specific line by RMB on a specific line.\n    * Tabs in this view can be detached by double-clicking a tab.\n\n* Breakpoints, Watchpoints, Catchpoints, Printpoints, manual gdb commands, and logs.\n    * The area below the Code Manager.\n    * Manual commands.  Manually enter a gdb or gdbmi command.\n      The commands are remembered for the next Seer use.\n    * Breakpoint manager. Create and manage breakpoints.\n    * Watchpoint manager. Create and manage watchpoints.\n      A watchpoint monitors when a variable is accessed (read, write, read/write).\n    * Catchpoint manager. Create and manage catchpoints.\n      A catchpoint stops execution on a C++ throw/rethrow/catch call.\n    * Printpoint manager. Create and manage printpoints.\n      A printpoint is like a breakpoint but it allows you to print variables at\n      that printpoint. See gdb's 'dprintf' call.\n    * GDB output. A log of any output from the gdb program itself.\n    * Seer output. A log of any output from the Seer program itself. As diagnostics.\n    * Tabs in this view can be detached by double-clicking a tab.\n\n* Stack frame information.\n    * Stack frame list. A frame can be double clicked to change the scope (the current function).\n    * Stack frame arguments. For each frame, print the arguments passed to each function.\n    * Stack locals. For the current function, print the values of the local variables.\n\n* Thread information.\n    * Thread ids. A list of all threads. Double click on a thread id to change the scope (the current thread).\n    * Thread frames. For each thread, list its stack frames.\n\n* Supports Gdb's Reverse Debugging mode.\n    * Turn instruction recording on or off.\n    * Set playback direction to forward or reverse.\n\nOpen Dialog\n-----------\n\nWhen the open executable dialog is invoked, it looks like this:\n![](images/opendialog.png)\n\nSeer Console\n------------\n\nAll text output from the executable will go to the Seer console. Text input for the executable can be entered via the console too.\n![](images/console.png)\n\n\nAssembly View\n-------------\n\nNormally Seer will just show the source code as tabs in the Code Manager. The program's assembly can also be show as a tab.\n\nSelect \"View-\u003eAssembly View\" and an extra tab will be shown alongside the source code tabs that shows the current assembly being executed. Here is an example.\n![](images/mainview_assemby.png )\n\nLike the source code tabs, breakpoints can be set in the assembly tab. The current instruction is highlighted.\n\nDouble-clicking on entries in the \"Breakpoints\" tab and the \"Stack frames\" tab will show the assembly for those addresses.\n\nThere are \"Nexti\" and \"Stepi\" hot-keys, as defined by your config settings. Normally \"Ctrl+F5\" and \"CTRL+F6\".\nUsing \"^F\" in the assembly tab will show a powerful search bar.\n\n**The assembly feature in Seer is new. Feel free to suggest changes/features.**\n\n\nMemory Visualizer\n-----------------\n\nWhen looking at the contents of raw memory in the Memory Visualizer, it looks like this :\n\nMemory | Disassembly\n--- | ---\n![](images/memoryvisualizer.png) | ![](images/memoryvisualizer_asm.png)\n\nArray Visualizer\n-----------------\n\nWhen looking at the contents of arrays in the Array Visualizer, it looks like this :\n\nNormal | Spline | Scatter\n--- | --- | ---\n![](images/arrayvisualizer.png) | ![](images/arrayvisualizer_spline.png) | ![](images/arrayvisualizer_scatter.png)\n\nTwo arrays can be used as an X-Y plot. For example, this simple 'points' array forms the X-Y outline of a shape.\n```\n    int main() {\n        int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};\n        return 0;\n    }\n```\n\nX values | Y values | XY Values\n--- | --- | ---\n![](images/arrayvisualizer_x.png) | ![](images/arrayvisualizer_y.png) | ![](images/arrayvisualizer_xy.png)\n\nStruct Visualizer\n-----------------\n\nWhen looking at the contents of a C/C++ struct or a C++ class in the Struct Visualizer, it looks like this.\nThis example shows the contents of \"*this\" for the current C++ class that Seer is in. All structure members\nthat are basic types can be edited.\n\n![](images/structvisualizer.png)\n\nThere is also a **Basic Struct Visualizer** that is more light weight, but can not follow pointers and can not\nbe edited.\n\nImage Visualizer\n-----------------\n\nWhen looking at the contents of raw memory that is an image, the Image Visualizer can be used.\n\n![](images/imagevisualizer.png)\n\nStarting Seer\n=============\n\nSeer is meant to easily start the program to debug from the command line. gdb has multiple\nmethods for debugging a program. So Seer naturally does too.\n\nGo to the Wiki to see all the ways to run Seer.\n\nhttps://github.com/epasveer/seer/wiki/Starting-Seer\n\nSupport/Contact\n===============\n\nSend an email to epasveer@att.net for any bugs or features. Or create a [task](https://github.com/epasveer/seer/issues)\nin my GitHub project page.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepasveer%2Fseer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepasveer%2Fseer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepasveer%2Fseer/lists"}