Debugging with GDB

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • rr

    Record and Replay Framework

  • https://en.wikipedia.org/wiki/Time_travel_debugging :

    > Interactive debuggers include the ability to modify code and step forward based on updated information.[4] Reverse debugging tools allow users to step backwards in time through the steps that resulted in reaching a particular point in the program. Time traveling debuggers provide these features and also allow users to interact with the program, changing the history if desired, and watch how the program responds.[5]

    https://github.com/rr-debugger/rr :

    > System requirements: Linux kernel ≥ 3.11 is required (for PTRACE_SETSIGMASK).

    > rr currently requires either:*

    > An Intel CPU with Nehalem (2010) or later microarchitecture. [OR] Certain AMD Zen or later processors

    Is there an rr-like reverse time-travel debugging tool for ARM?

    Are GUIs like Voltron and Ghidra helpful for rr-like traces?

  • gdb-dashboard

    Modular visual interface for GDB in Python

  • Try GDB Dashboard, it makes gdb much easier to use:

    https://github.com/cyrus-and/gdb-dashboard

    There's also Voltron which works with both gdb and lldb (amongst others):

    https://github.com/snare/voltron

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • voltron

    A hacky debugger UI for hackers

  • In a past life I used Voltron[0] with lldb. Depending on your use case, it might be enough? Watching what value lives in what register works at least (or at least worked last time I used it). It's designed around having things in separate terminals, so you'll need tmux/screen/tiling window manager to get a similar view to gef.

    [0] https://github.com/snare/voltron

  • gef

    GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux

  • I still struggle with GDB but my excuse is that I seldom use it.

    When I was studying reverse engineering though, I came across a really cool kit (which I've yet to find an alternative for lldb, which would be nice given: rust)

    I'd recommend checking it out, if for no other reason than it makes a lot of things really obvious (like watching what value lives in which register).

    https://github.com/hugsy/gef

    LLDB's closest alternative to this is called Venom, but it's not the same at all. https://github.com/ovh/venom

  • venom

    🐍 Manage and run your integration tests with efficiency - Venom run executors (script, HTTP Request, web, imap, etc... ) and assertions (by ovh)

  • I still struggle with GDB but my excuse is that I seldom use it.

    When I was studying reverse engineering though, I came across a really cool kit (which I've yet to find an alternative for lldb, which would be nice given: rust)

    I'd recommend checking it out, if for no other reason than it makes a lot of things really obvious (like watching what value lives in which register).

    https://github.com/hugsy/gef

    LLDB's closest alternative to this is called Venom, but it's not the same at all. https://github.com/ovh/venom

  • clasp

    clasp Common Lisp environment (by clasp-developers)

  • The GDB JIT interface implementation is seriously flawed. I love GDB - but this causes me a LOT of grief when debugging clasp (Common Lisp implemented using llvm as the backend https://github.com/clasp-developers/clasp.git).

    Every time a JITted object file is added using the API, the entire symbol table is sorted. If you have 10,000+ JITted object files as we do - it takes hours to days to weeks to register them all.

    We use the Undo time traveling debugger that builds on top of GDB. It's awesome but we are crippled because of the JIT API implementation.

    I'd love to see this get fixed - if anyone knows who to talk with about it - drop me a line.

  • lldb-mi

    LLDB's machine interface driver

  • Well, there's LLDB (https://lldb.llvm.org/) - I've heard it's got some nifty architectural features (e.g. having access to the Clang framework for handling C/C++ expressions).

    I've done some minimal poking about in the code; I found its object-orientation a bit hard to grok (just for me personally) but it seemed to be quite uniformly applied so it might well be easier to work with.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • qBittorrent

    qBittorrent BitTorrent client

  • They have a step-by-step guide for using them, without mentioning kdevelop:

    https://github.com/qbittorrent/qBittorrent/wiki/Setup-GDB-wi...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts