What a good debugger can do

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

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

    Record and Replay Framework

  • For time travel debugging in Go:

    The Delve debugger for Go supports debugging rr traces: https://github.com/go-delve/delve/blob/master/Documentation/...

    Undo (who I work for) maintain a fork that debugs our LiveRecorder recordings: https://docs.undo.io/GoDelve.html

    Either rr (https://rr-project.org/) or our UDB debugger (https://undo.io/solutions/products/udb/) can do some time travel debugging of Go programs via GDB's built-in support for Go. I believe its weakness is in support for goroutines, since they don't map well onto its idea of how programs run.

  • flow-storm-debugger

    A debugger for Clojure and ClojureScript with some unique features.

  • This is another example, a tracing time travel debugger for Clojure https://github.com/jpmonettas/flow-storm-debugger

    Supports a bunch of stuff described there and more.

  • 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
  • debug-adapter-protocol

    Defines a common protocol for debug adapters.

  • > Debuggers need to do more things

    It's true that coming up with an interface for an abstract debugger is harder, but it's not impossible. Microsoft create Debug Adapter Protocol (https://microsoft.github.io/debug-adapter-protocol/), which is conceptually similar for LSP. It's not perfect, but covers most basic operations pretty well, while leaving to the debugger to deal with the implementation details.

  • delve

    Delve is a debugger for the Go programming language.

  • For time travel debugging in Go:

    The Delve debugger for Go supports debugging rr traces: https://github.com/go-delve/delve/blob/master/Documentation/...

    Undo (who I work for) maintain a fork that debugs our LiveRecorder recordings: https://docs.undo.io/GoDelve.html

    Either rr (https://rr-project.org/) or our UDB debugger (https://undo.io/solutions/products/udb/) can do some time travel debugging of Go programs via GDB's built-in support for Go. I believe its weakness is in support for goroutines, since they don't map well onto its idea of how programs run.

  • watchpoints

    watchpoints is an easy-to-use, intuitive variable/object monitor tool for python that behaves similar to watchpoints in gdb.

  • It's sad that Python does not really support some of these debugging methods.

    E.g. you cannot really watch variable changes. There are some workarounds, like writing a custom __setattr__ or __setattribute__ in case of an object, or checking all STORE_* operations. https://youtrack.jetbrains.com/issue/PY-30387 https://github.com/gaogaotiantian/watchpoints

    Reverse debugging is also sth I would like to have, and there are a few projects to support this, but it's not really well supported in standard CPython. https://foss.heptapod.net/pypy/revdb https://pytrace.com/

  • spdlog

    Fast C++ logging library.

  • * Aha! In digging up the docs for NDC, I found this[1], which does mention a book for your reading list: "Patterns for Logging Diagnostic Messages" part of the book "Pattern Languages of Program Design 3" edited by Martin et al.

    [1] https://github.com/gabime/spdlog

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