Skip to main content
PyPI CI Status Documentation Status https://img.shields.io/badge/code%20style-black-000000.svg

drgn (pronounced “dragon”) is a debugger with an emphasis on programmability. drgn exposes the types and variables in a program for easy, expressive scripting in Python. For example, you can debug the Linux kernel:

>>> from drgn.helpers.linux import list_for_each_entry
>>> for mod in list_for_each_entry('struct module',
...                                prog['modules'].address_of_(),
...                                'list'):
...    if mod.refcnt.counter > 10:
...        print(mod.name)
...
(char [56])"snd"
(char [56])"evdev"
(char [56])"i915"

Although other debuggers like GDB have scripting support, drgn aims to make scripting as natural as possible so that debugging feels like coding. This makes it well-suited for introspecting the complex, inter-connected state in large programs. It is also designed as a library that can be used to build debugging and introspection tools; see the official tools.

drgn was developed for debugging the Linux kernel (as an alternative to the crash utility), but it can also debug userspace programs written in C. C++ support is in progress.

Documentation can be found at drgn.readthedocs.io.

Installation

Install dependencies:

Arch Linux:

$ sudo pacman -S --needed gcc libelf make pkgconf python python-pip python-setuptools

Debian/Ubuntu:

$ sudo apt-get install gcc liblzma-dev libelf-dev libdw-dev make pkgconf python3 python3-dev python3-pip python3-setuptools zlib1g-dev

Note that Debian Stretch, Ubuntu Trusty, and Ubuntu Xenial (and older) ship Python versions which are too old. Python 3.6 or newer must be installed manually.

Fedora:

$ sudo dnf install elfutils-devel gcc make pkgconf python3 python3-devel python3-pip python3-setuptools

Optionally, install:

  • libkdumpfile if you want support for kdump-compressed kernel core dumps

Then, run:

$ sudo pip3 install drgn

See the installation documentation for more options.

Quick Start

drgn debugs the running kernel by default; run sudo drgn. To debug a running program, run sudo drgn -p $PID. To debug a core dump (either a kernel vmcore or a userspace core dump), run drgn -c $PATH. The program must have debugging symbols available.

Then, you can access variables in the program with prog['name'], access structure members with ., use various predefined helpers, and more:

$ sudo drgn
>>> prog['init_task'].comm
(char [16])"swapper/0"
>>> d_path(fget(find_task(prog, 1), 0).f_path.address_of_())
b'/dev/null'
>>> max(task.stime for task in for_each_task(prog))
(u64)4192109975952
>>> sum(disk.gendisk.part0.nr_sects for disk in for_each_disk(prog))
(sector_t)999705952

See the user guide for more information.

License

Copyright (c) Facebook, Inc. and its affiliates.

drgn is licensed under the GPLv3 or later.

Metadata

Release files for drgn 0.0.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for drgn 0.0.13
File Size Uploaded
drgn-0.0.13.tar.gz 840.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for drgn 0.0.13
File
drgn-0.0.13-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.12+ x86-64 Details
drgn-0.0.13-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.12+ x86-64 Details
drgn-0.0.13-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.12+ x86-64 Details
drgn-0.0.13-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 Details
drgn-0.0.13-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 Details

Total release size: 21.0 MB

Release files / drgn-0.0.13.tar.gz

Download URL drgn-0.0.13.tar.gz
Size 840.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b6d790681f6e6af17f522f033dc83f196134e48f814e664dfef1ac488ac6cdef
BLAKE2b-256 checksum
How to use checksums
1813e4d1b4c932e8dea2dd3da78929ba15b48873fcf919683919e6d1d863d3eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / drgn-0.0.13-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL drgn-0.0.13-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
e5505c77a93517a73fac40461df33dfed7c045bd9e0e66342a5ed45ba9b7dbdd
BLAKE2b-256 checksum
How to use checksums
6beb37ffbb820ef644cf78cd67e8de2cdaac3efb71d0286d0138c13824bed9de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / drgn-0.0.13-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL drgn-0.0.13-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 4.0 MB
Tags CPython 3.9 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
59dd1019895baf9c7657266de413ac53f6d80077c45df1791a4190f9a96decd9
BLAKE2b-256 checksum
How to use checksums
e3b8171c16a04a73e96db9ef22c04904b37ea50389402e97837f61725424b404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / drgn-0.0.13-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL drgn-0.0.13-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 4.0 MB
Tags CPython 3.8 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
ecaba123c4eb4064d5c76cb9237dc237ce05d370e6c9cca2d802d792bdd590c8
BLAKE2b-256 checksum
How to use checksums
fe9aff4ff470cae87b9ac0a5cd12aae6f3fca1b2ec80d22ae1dae74fe63059be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / drgn-0.0.13-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL drgn-0.0.13-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 4.0 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
3fcb8b7e6c2e2c923a02a6ae1d137f02da68b2d5518f624951402dbf9ef8d7a0
BLAKE2b-256 checksum
How to use checksums
1717c4c7f73129fc87acd7011febf8e03b1798b39223bdbc9828e76cf0b54db1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

Release files / drgn-0.0.13-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl

Download URL drgn-0.0.13-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Size 4.0 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
9c70be75c83347ae678ab9fcbc644d749291ed91fb6b69d2e3a8d5094f103c09
BLAKE2b-256 checksum
How to use checksums
0f8bf2ba83a0573de4b26c18965d0ec085115b6b31f2b5b31fc93e6a315c2920
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page