- Program repair: Community-driven effort to facilitate discovery, access and systematization of data related to automated program repair research
- UNIX Debugger Translation Table: gdb, lldb, dbx, adb, sdb
- The Pocket Guide to Debugging
Standard Libraries
Readings
Books, Book Reviews
Concurrency
- Interactive Debugging of Concurrent Programs under Relaxed Memory Models
Probe Effect
- A probe effect in concurrent programs
- Debugging Concurrent Programs
Implementation
- An Efficient and Generic Reversible Debugger using the Virtual Machine based Approach
- Debin: Predicting Debug Information in Stripped Binaries
- Debuggers for Programming Languages
- Debugging with the natives - Stephen Kell
- Debugging Native Extensions of Dynamic Languages
- Debugging with Intelligence via Probabilistic Inference
- Debugopt: Debugging fully optimized natively compiled programs using multistage instrumentation
- Eli Bendersky - http://eli.thegreenplace.net/tag/debuggers
- Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools
- The Art, Science, and Engineering of Programming, 2018, Vol. 2, Issue 3, Article 14
- Van De Vanter, Michael; Seaton, Chris; Haupt, Michael; Humer, Christian; Würthinger, Thomas
- http://programming-journal.org/2018/2/14/
- Framework for Instruction-level Tracing and Analysis of Program Executions
- GCC gOlogy: studying the impact of optimizations on debugging
- How breakpoints are set - http://majantali.net/2016/10/how-breakpoints-are-set/
- How do debuggers keep track of the threads in your program?
- How to code debuggers - Tomasz Wegrzanowski - https://t-a-w.blogspot.com/2007/03/how-to-code-debuggers.html
- Making a low level (Linux) debugger
- On-Stack Replacement, Distilled
- Samy Al Bahra, Backtrace
- Compiler debug quality suite - https://github.com/backtrace-labs/cdqs
- Compile Once Debug Twice: Picking a Compiler for Debuggability
- Debugging the Debugger: Why Your Debugger Doesn’t Work When You Need it To
- Implementing a Debugger - Backtrace
- Writing a basic Windows debugger - https://www.codeproject.com/Articles/43682/Writing-a-basic-Windows-debugger
- Writing a Debugger - Joseph Kain - http://system.joekain.com/debugger/
- Writing a Linux Debugger - Simon Brand
- (Windows) Data Breakpoints - https://blogs.msdn.microsoft.com/reiley/2011/07/21/data-breakpoints/
- (Windows) Side Effects of Debugger - https://blogs.msdn.microsoft.com/reiley/2011/08/27/side-effects-of-debugger/
Correctness
- Correctness Proofs of Compilers and Debuggers: an Approach Based on Structural Operational Semantics
- Debug Information Validation for Optimized Code
Testing
- Comparing The Quality Of Debug Information Produced By Clang And GCC
- Debug Frame Checking: Check
.eh_frame
and .debug_frame
information
- DExTer (Debugging Experience Tester)
- Feedback-Directed Differential Testing of Interactive Debuggers
- Interactive Metamorphic Testing of Debuggers
- lldb-repro: a utility to transparently capture and replay debugger sessions through the command line driver
- Samy Al Bahra, Backtrace
Reverse Debugging
See also: RR, WinDbg - Time Travel Debugging
- A Review of Reverse Debugging
- Don’t Panic: Reverse Debugging of Kernel Drivers
- Efficient Algorithms for Bidirectional Debugging
- Expositor: Scriptable Time-Travel Debugging with First Class Traces
- Improving the performance of reverse debugging
- POMP: Postmortem Program Analysis with Hardware-Enhanced Post-Crash Artifacts
- REPT: Reverse Debugging of Failures in Deployed Software
- Reverse History
- Transition Watchpoints: Teaching Old Debuggers New Tricks
Software Engineering
- A Survey on Software Fault Localization
- Are Automated Debugging Techniques Actually Helping Programmers?
- Automated Debugging: Are We There Yet?
- Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior
- International Conference on Software Engineering ICSE 2008
- Andrew J. Ko, Brad A. Myers
- Microsoft Research Talk:
- "Static and dynamic program slicing algorithms for extracting and answering developers questions about program output that substantially decrease fault localization time."
- https://blog.acolyer.org/2014/10/17/debugging-reinvented/
- On The Dichotomy of Debugging Behavior Among Programmers
- Where Is the Bug and How Is It Fixed? An Experiment with Practitioners
Transparency
- 2017 - Ninja: Towards Transparent Tracing and Debugging on ARM
- 2016 - Towards Transparent Debugging
- 2015 - Using Hardware Features for Increased Debugging Transparency
Software
- dbg: A macro for printf-style debugging fans
- LibVMI: Simplified Virtual Machine Introspection
- "LibVMI is a virtual machine introspection library. This means that it helps you access the memory of a running virtual machine. LibVMI provides primitives for accessing this memory using physical or virtual addresses and kernel symbols. LibVMI also supports accessing memory from a physical memory snapshot, which is helpful for debugging or forensic analysis."
- https://github.com/libvmi/libvmi
- PulseDbg: Hypervisor-based debugger
- PyREBox: a Python scriptable Reverse Engineering sandbox
- "It is based on QEMU, and its goal is to aid reverse engineering by providing dynamic analysis and debugging capabilities from a different perspective. PyREBox allows to inspect a running QEMU VM, modify its memory or registers, and to instrument its execution, by creating simple scripts in python to automate any kind of analysis. QEMU (when working as a whole-system-emulator) emulates a complete system (CPU, memory, devices...). By using VMI techniques, it does not require to perform any modification into the guest operating system, as it transparently retrieves information from its memory at run-time."
- https://github.com/Cisco-Talos/pyrebox
- http://blog.talosintelligence.com/2017/07/pyrebox.html
- pyvmidbg: LibVMI-based debug server, implemented in Python
- Radare2
- Radare project started as a forensics tool, a scriptable commandline hexadecimal editor able to open disk files, but later support for analyzing binaries, disassembling code, debugging programs, attaching to remote gdb servers, etc.
- http://www.radare.org/
- https://github.com/radare/radare2
- r2vmi: Hypervisor-Level Debugger based on Radare2 / LibVMI, using VMI IO and debug plugins
- https://github.com/Wenzel/r2vmi
- Hack.lu 2018: Hypervisor-Level Debugger: Benefits And Challenges - Mathieu Tarral
- r2con2018 - Hypervisor Level Debugger with r2 - Mathieu Tarral
- ret-sync: Reverse-Engineering Tools SYNChronization
- rVMI - A New Paradigm For Full System Analysis
- Vivisect / Vdb / Vtrace
- Voltron - https://github.com/snare/voltron
- xendbg - A modern Xen debugger
- https://github.com/nccgroup/xendbg
- "
xendbg
is a feature-complete reference implementation of a modern Xen VMI debugger, superseding Xen's own limited and rarely-maintained gdbsx
. It can debug both paravirtualized (PV) and hardware virtualized (HVM) guests, and provides both a standalone REPL and an LLDB server mode."
- Xendbg: A Full-Featured Debugger for the Xen Hypervisor
GDB
- GDB: The GNU Project Debugger
- GDB - The Architecture of Open Source Applications - Stan Shebs
Projects
- CGDB: Console front-end to the GNU debugger
- Gdb Assembly Informant
- GDB dashboard
- GDB helper scripts
- gdb-gui: A gdb gui written in Python, running inside gdb itself
- gdb-helpers: GDB helper scripts
- gdb-tools: Various tools to improve the gdb experience
- gdb-walkers: Bring mdb walkers to gdb, also add other helpful commands.
- GDBFrontend
- gdbgui: A browser-based frontend for GDB
- GdbShellPipe: Enable piping of internal command output to external commands
- GDBundle: Plugin Manager for GDB and LLDB
- Gede: a graphical frontend (GUI) to GDB written in Qt
- GEF (GDB Enhanced Features)
- libdebugme: Automatically drop to gdb on error
- OnlineGDB
- "OnlineGDB an online compiler and debugger tool for C/C++ languages. It is world's first online IDE which gives debugging facility with embedded gdb."
- http://OnlineGDB.com
- PEDA - Python Exploit Development Assistance for GDB
- PINCE: front-end reverse engineering tool for the GDB - https://github.com/korcankaraokcu/PINCE
- pwndbg - Exploit Development and Reverse Engineering with GDB Made Easy
- Pwngdb - https://github.com/scwuaptx/Pwngdb
- pygdbmi - Get Structured Output from GDB's Machine Interface - https://github.com/cs01/pygdbmi
- QuickPatch: a GDB plug-in to patch an ELF file
- SymGDB - symbolic execution plugin for gdb - https://github.com/SQLab/symgdb
Editor Integration
- GDB-MI: a package by Nick Roberts which makes Emacs use GDB/MI interface to talk with the GNU Debugger
- GDB graphical interface for GNU Emacs
- Native Debug
- neogdb.vim: Vim GDB front-end for neovim
- RealGUD: An extensible, modular GNU Emacs front-end for interacting with external debuggers
Memory Debugging
Plotting
- GDBplotlib: Plotting and exporting of variables from GDB
- gdb-plot
Profiling
- gdbpmp: A GDB Based Wallclock Profiler - https://github.com/markhpc/gdbpmp
- gdbprof: A wall clock time-based profiler built on GDB's Python interface
- GDB profiler: Rich man's profiler, a profiler for native OCaml and other executables
Readings
Talks
- A flexible GDB (GNU Debugger) target description for processor diversity – SFO17-210
- Become a GDB Power User - ACCU 2016 - Greg Law
- Debugging Linux C++
- GDB: C++ conversion & dogfooding C++
- GDB - A Lot More Than You Knew - CppCon 2016 - Greg Law
- Give me 15 minutes & I'll change your view of GDB - CppCon 2015 - Greg Law
- How custom GDB commands help in C++ development
- Improving Debuggability with GDB's Python API - C++Now 2018 - Jeff Trull
- Liberating the Debugging Experience with the GDB Python API
- More GDB wizardry and 8 other essential Linux application debugging tools
- Programmatic Debugging with GDB and Python
- SecurityTube GDB Expert (SGDE)
- The GDB Text User Interface
- Understanding, Scripting, and Extending GDB (2017)
- Your Application versus GDB - FOSDEM 2014 - Tom Tromey
LLDB
Projects
- ds2: Debug server for lldb
- GDBundle: Plugin Manager for GDB and LLDB
- LLDB Scripts: A collection of LLDB aliases/regexes and Python scripts to aid in your debugging sessions
- lldbinit: Similar implementation of .gdbinit from fG! for lldb in python
- LLDBINIT: A gdbinit clone for LLDB
- Vegvisir: A browser based GUI for LLDB Debugger
- vplot: C++ container graph visualization for lldb
Editor Integration
Readings
- LLDB Cheat Sheet
- LLDB for GDB Users – Command Summary
- LLDB Scripts - Debugging the Swift Compiler
- LLDB to GDB Command Map - https://lldb.llvm.org/lldb-gdb.html
- Beyond Debug Information: Improving Program Reconstruction in LLDB using C++ Modules
Talks
- Support for mini-debuginfo in LLDB
- Better C++ debugging using Clang Modules in LLDB
- Bringing RenderScript to LLDB
- Debugging Tips and Tricks
- Debugging with LLDB
- Debugging with LLVM: A quick introduction to LLDB and LLVM sanitizers
- ds2: a tiny debug server used with lldb
- LLDB - a new C++ debugger
- LLDB Reproducers
- LLDB Tutorial: Adding debugger support for your target
- LLDB: Beyond "po"
- Migrating from GDB to LLDB
RR
- RR: Record and Replay Framework
- rr Paper: "Lightweight User-Space Record And Replay"
- Control Flow Visualizer (CFViz): an rr / gdb plugin
- Engineering Record And Replay For Deployability
- Improved debugging with rr - https://techtalk.intersec.com/2018/03/improved-debugging-with-rr/
- rr-dataflow: An 'origin' command that continues to the origin of a piece of data in rr
- Timeless Debugging of Complex Software: Root Cause Analysis of a Non-Deterministic JavaScriptCore Bug
OS-specific
iOS
- Chisel: a collection of LLDB commands to assist debugging iOS apps
- KTRW: An iOS kernel debugger based on a KTRR bypass for A11 iPhones that works with LLDB
Linux
- crash-python: a semantic debugger for the Linux kernel
- debuginfod
- elfutils debuginfod is a client/server in elfutils 0.178+ that automatically distributes elf/dwarf/source-code from servers to clients such as debuggers across HTTP
- Deploying debuginfod servers for your developers
- The elfutils debuginfod server
- Introducing debuginfod, the elfutils debuginfo server
- elfutils debuginfo-server
- drgn: Scriptable debugger library
- edb: a cross platform x86/x86-64 debugger
- ich: Linux crash harness with runtime process instrumentation
- libkdumpfile: Kernel coredump file access
- libthread_db
- Notes about an odd, esoteric, yet incredibly useful library: libthread_db
- ORC (Oops Rewind Capability) Unwinder
- plutonium-dbg: A kernel-based debugger for Linux applications
- Scout - Instruction based research debugger
- sdb: The Slick/Simple Debugger
- vmlinux-to-elf: A tool to recover a fully analyzable ELF from a raw kernel, through extracting the kernel symbol table (kallsyms)
Linux - Talks
- Linux Kernel Debugging: Going Beyond Printk Messages
macOS
Windows
Visual Studio Debugger
WinDbg
- Introduction to WinDbg and debugging Windows - series by Anand George
- Modern Debugging with WinDbg Preview
- Time Travel Debugging - James McNellis
- WinDbg Basics for Malware Analysis
Readings
Projects
- 0CCh Windbg extension - https://github.com/0cch/0cchext
- DbgModelCppLib: A header-only C++ library for producing and consuming data from the debugger data model
- PyKd - Python extension for WinDBG to access Debug Engine
- TWindbg: PEDA-like debugger UI for WinDbg - https://github.com/bruce30262/TWindbg
- WDBGARK: WinDBG Anti-RootKit extension - https://github.com/swwwolf/wdbgark
- Winbagility: a tool to connect WinDbg on non /DEBUG Windows x64 systems
- WinDbg-Samples: Sample extensions, scripts, and API uses for WinDbg
- WinDBGtree: A command tree based on commands and extensions for Windows Kernel Debugging
Time Travel Debugging
Stack Trace & Unwinding
Talks
2019
- Modern Linux C++ Debugging Tools: Under the Covers
2018
- GNU Tools Cauldron 2018
- gOlogy: impact of -O* on -g
- A collection of debug info improvements for the GNU Compiler Collection
- Let's Write a Debugger!
2017
- Debugging the debugger - BSDCan 2017, Samy Bahra
- Debugging Under Fire: Keep your Head when Systems have Lost their Mind • GOTO 2017 • Bryan Cantrill
- How C++ Debuggers work - Simon Brand
- C++ Edinburgh 2018
- Meeting C++ 2017
2016
- Building a Debugging Mindset - QConSF 2016 - Devon H. O'Dell
- How do Debuggers (Really) Work - Pawel Moll
- Post-mortem Debugging: could you be the one? - Surge 2016 - Abel Mathew
- Timeless Debugging - USENIX Enigma 2016 - George Hotz
2015
- Debugging using an exact recording of a program's execution - C++Now 2015 - Julian Smith
2014
- The VS Debugger: How It Works + Tips and Tricks - GoingNative 28 - Gabriel Ha, Gregg Miskelly, Steve Carroll
Tags:
native
reading
linux
windows
Last modified 07 October 2024