Voltron is an extensible debugger UI toolkit written in Python.

Overview

Voltron

build

Voltron is an extensible debugger UI toolkit written in Python. It aims to improve the user experience of various debuggers (LLDB, GDB, VDB and WinDbg) by enabling the attachment of utility views that can retrieve and display data from the debugger host. By running these views in other TTYs, you can build a customised debugger user interface to suit your needs.

Voltron does not aim to be everything to everyone. It's not a wholesale replacement for your debugger's CLI. Rather, it aims to complement your existing setup and allow you to extend your CLI debugger as much or as little as you like. If you just want a view of the register contents in a window alongside your debugger, you can do that. If you want to go all out and have something that looks more like OllyDbg, you can do that too.

Built-in views are provided for:

  • Registers
  • Disassembly
  • Stack
  • Memory
  • Breakpoints
  • Backtrace

The author's setup looks something like this:

voltron example LLDB

Any debugger command can be split off into a view and highlighted with a specified Pygments lexer:

command views

More screenshots are here.

Support

Voltron supports LLDB, GDB, VDB and WinDbg/CDB (via PyKD) and runs on macOS, Linux and Windows.

WinDbg support is still fairly new, please open an issue if you have problems.

The following architectures are supported:

lldb gdb vdb windbg
x86
x86_64
arm
arm64
powerpc

Installation

Note: Only macOS and Debian derivatives are fully supported by the install script. It should hopefully not fail on other Linux distros, but it won't try to install package dependencies. If you're using another distro, have a look at install.sh to work out what dependencies you might need to install before running it.

Download the source and run the install script:

$ git clone https://github.com/snare/voltron
$ cd voltron
$ ./install.sh

By default, the install script will install into the user's site-packages directory. If you want to install into the system site-packages, use the -s flag:

$ ./install.sh -s

You can also install into a virtual environment (for LLDB only) like this:

$ ./install.sh -v /path/to/venv -b lldb

If you are on Windows without a shell, have problems installing, or would prefer to install manually, please see the manual installation documentation.

Quick Start

  1. If your debugger has an init script (.lldbinit for LLDB or .gdbinit for GDB) configure it to load Voltron when it starts by sourcing the entry.py entry point script. The full path will be inside the voltron package. For example, on macOS it might be /Library/Python/2.7/site-packages/voltron/entry.py. The install.sh script will add this to your .gdbinit or .lldbinit file automatically if it detects GDB or LLDB in your path.

    LLDB:

     command script import /path/to/voltron/entry.py
    

    GDB:

     source /path/to/voltron/entry.py
    
  2. Start your debugger and initialise Voltron manually if necessary.

    On recent versions of LLDB you do not need to initialise Voltron manually:

     $ lldb target_binary
    

    On older versions of LLDB you need to call voltron init after you load the inferior:

     $ lldb target_binary
     (lldb) voltron init
    

    GDB:

     $ gdb target_binary
    

    VDB:

     $ ./vdbbin target_binary
     > script /path/to/voltron/entry.py
    

    WinDbg/CDB is only supported run via Bash with a Linux userland. The author tests with Git Bash and ConEmu. PyKD and Voltron can be loaded in one command when launching the debugger:

     $ cdb -c '.load C:\path\to\pykd.pyd ; !py --global C:\path\to\voltron\entry.py' target_binary
    
  3. In another terminal (I use iTerm panes) start one of the UI views. On LLDB, WinDbg and GDB the views will update immediately. On VDB they will not update until the inferior stops (at a breakpoint, after a step, etc):

     $ voltron view register
     $ voltron view stack
     $ voltron view disasm
     $ voltron view backtrace
    
  4. Set a breakpoint and run your inferior.

     (*db) b main
     (*db) run
    
  5. When the debugger hits the breakpoint, the views will be updated to reflect the current state of registers, stack, memory, etc. Views are updated after each command is executed in the debugger CLI, using the debugger's "stop hook" mechanism. So each time you step, or continue and hit a breakpoint, the views will update.

Documentation

See the wiki on github.

FAQ

Q. Why am I getting an ImportError loading Voltron?

A. You might have multiple versions of Python installed and have installed Voltron using the wrong one. See the more detailed installation instructions.

Q. GEF? PEDA? PwnDbg? fG's gdbinit?

A. All super great extensions for GDB. These tools primarily provide sets of additional commands for exploitation tasks, but each also provides a "context" display with a view of registers, stack, code, etc, like Voltron. These tools print their context display in the debugger console each time the debugger stops. Voltron takes a different approach by embedding an RPC server implant in the debugger and enabling the attachment of views from other terminals (or even web browsers, or now synchronising with Binary Ninja), which allows the user to build a cleaner multi-window interface to their debugger. Voltron works great alongside all of these tools. You can just disable the context display in your GDB extension of choice and hook up some Voltron views, while still getting all the benefits of the useful commands added by these tools.

Bugs and Errata

See the issue tracker on github for more information or to submit issues.

If you're experiencing an ImportError loading Voltron, please ensure you've followed the installation instructions for your platform.

LLDB

On older versions of LLDB, the voltron init command must be run manually after loading the debug target, as a target must be loaded before Voltron's hooks can be installed. Voltron will attempt to automatically register its event handler, and it will inform the user if voltron init is required.

WinDbg

More information about WinDbg/CDB support here.

Misc

The authors primarily use Voltron with the most recent version of LLDB on macOS. We will try to test everything on as many platforms and architectures as possible before releases, but LLDB/macOS/x64 is going to be by far the most frequently-used combination. Hopefully Voltron doesn't set your pets on fire, but YMMV.

License

See the LICENSE file.

If you use this and don't hate it, buy me a beer at a conference some time. This license also extends to other contributors - richo definitely deserves a few beers for his contributions.

Credits

Thanks to my former employers Assurance and Azimuth Security for giving me time to spend working on this.

Props to richo for all his contributions to Voltron.

fG!'s gdbinit was the original inspiration for this project.

Thanks to Willi for implementing the VDB support.

Voltron now uses Capstone for disassembly as well as the debugger hosts' internal disassembly mechanism. Capstone is a powerful, open source, multi-architecture disassembler upon which the next generation of reverse engineering and debugging tools are being built. Check it out.

Thanks to grazfather for ongoing contributions.

Issues
  • Exception <class 'ImportError'> raised while loading Voltron: No module named 'plugin'

    Exception raised while loading Voltron: No module named 'plugin'

    Hi,

    just spent last 2-3 days in implementing a python server inside gdb, with some external views that can be started in different terminals (register, stack etc.). And accidentally bumped into this project! Briliant!!!!

    just that... did not manage to make it working... got the error above.

    default python is the same version for gdb and the one found in path (both are 3.4)

    thanks in advance for your help

    opened by mobiphil 53
  • AttributeError: 'NoneType' object has no attribute 'adaptor_class'

    AttributeError: 'NoneType' object has no attribute 'adaptor_class'

    I build the latest Voltron from GitHub and install in Windows following the instructions at https://github.com/snare/voltron/wiki/Installation#windbg and receive the following error in my WinDbg Command log:

    0:000> .load pykd 0:000> !py --global C:\Python27\Lib\site-packages\voltron-0.1.5-py2.7.egg\voltron\entry.py C:\Python27\lib\site-packages\blessed\terminal.py:32: UserWarning: One or more of the modules: 'termios', 'fcntl', and 'tty' are not found on your platform 'win32'. The following methods of Terminal are dummy/no-op unless a deriving class overrides them: setraw, cbreak, kbhit, height, width warnings.warn(_MSG_NOSUPPORT) An error occurred while loading Voltron:

    Traceback (most recent call last): File "C:\Python27\Lib\site-packages\voltron-0.1.5-py2.7.egg\voltron\entry.py", line 98, in voltron.debugger = plugin.adaptor_class(*args) AttributeError: 'NoneType' object has no attribute 'adaptor_class'

    opened by trietptm 29
  • Implicitly Setting an Architecture

    Implicitly Setting an Architecture

    I have issues (Ubu 14.04, lldb 3.7) with voltron views recognizing architecture types. I tried compiling from both clang and gcc.

    file reports: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=, not stripped

    I am thinking about just modifying register.py to implicitly set an architecture - I could submit a pull request if there's no resources to support this. I realize this is more a feature request than a bug. It looks like we could possibly just add an argument to configure_subparser and then I would have to spend a few minutes digging into where targets sets it to propagate properly. Shouldn't be too difficult. Let me know if you think i should just do it and submit a pull request.

    Regards,

    -- q

    opened by theqlabs 24
  • No voltron views work.

    No voltron views work.

    arm-none-eabi-gdb v 7.4.50. Inferior started by running source /..../voltron.py as the very first thing I do::

    source /usr/local/lib/python2.7/dist-packages/voltron/entry.py set pagination off layout src fs cmd target remote localhost:2331 monitor flash device = LPC1763 monitor speed adaptive monitor reset


    Installed the latest version of Voltron through pip. (you probably want to rename voltron to voltron-X.Y)


    This from "voltron view break"

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/voltron/view.py", line 252, in run msg = e.message.args[1].strerror IndexError: tuple index out of range

    Error: HTTPConnectionPool(host='localhost', port=5555): Max retries exceeded with url: /api/request (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7ffff1fca390>: Failed to establish a new connection: [Errno 111] Connection >

    opened by mikaelj 19
  • Interrupted System Call

    Interrupted System Call

    Really trying to get this to work on a 32-bit Ubuntu 12.04 LTS VM. I can get everything installed/compiled/etc. "Voltron loaded" appears in a glowing red when I fire up GDB, my .gdbinit has the source and init lines but I have two issues:

     Starting program: myFile 9999
     Exception in thread Thread-1:
     Traceback (most recent call last):
     File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
     self.run()
     File "/usr/local/lib/python2.7/dist-packages/voltron-0.1-py2.7.egg/voltron/core.py", line 193, in run
     rfds, _, _ = select.select([serv, self.exit_pipe] + self.clients, [], [])
     error: (4, 'Interrupted system call')'
    

    and then in my second terminal, when trying to start a view, I get:

     Error connecting to server: Connection refused
    

    Thanks for any guidance you can provide.

    opened by theqlabs 17
  • [Feature Request] cdb support

    [Feature Request] cdb support

    An idea I was playing with was cdb support for Voltron.

    cdb is the console based windbg, and as windbg can load python addons I thought Voltron might be a great addition.

    I have been thinking for over a month to implement this myself, although it seems I don't have enough spare time to get started with it. Decided to dump the idea here so everybody can comment on the idea and or implement it.

    opened by Stolas 16
  • error: Could not find suitable distribution for Requirement.parse('yaml')

    error: Could not find suitable distribution for Requirement.parse('yaml')

    Hello! I've been trying to get this set up for a while, maybe you can tell me what I am doing wrong. I get this error when using setup.py install....

    error: Could not find suitable distribution for Requirement.parse('yaml')

    Any Ideas?

    opened by ghost 16
  • It's not working on Ubuntu 14.04

    It's not working on Ubuntu 14.04

    [email protected]:~$ gdb -q
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/voltron-0.1-py2.7.egg/dbgentry.py", line 1, in <module>
        import voltron
    ImportError: No module named 'voltron'
    /home/user/.gdbinit:2: Error in sourced command file:
    Undefined command: "voltron".  Try "help".
    (gdb) 
    
    [email protected]:~$ cat .gdbinit 
    source /usr/local/lib/python2.7/dist-packages/voltron-0.1-py2.7.egg/dbgentry.py
    voltron start
    
    [email protected]:~$ which voltron 
    /usr/local/bin/voltron
    
    [email protected]:~$ python
    Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import voltron
    >>> voltron.__file__
    '/usr/local/lib/python2.7/dist-packages/voltron-0.1-py2.7.egg/voltron/__init__.pyc'
    
    opened by blacktop 15
  • Problem with gdbinit

    Problem with gdbinit

    Hey, me again. gdb 7.4.1-debian is giving me this error:

    Exception <type 'exceptions.ImportError'> raised while loading Voltron: No module named blessed
    /home/admin/.gdbinit:2: Error in sourced command file:
    Undefined command: "voltron".  Try "help".
    

    I'm assuming this is from the 'import blessed' line in dbgentry.py. Any ideas?

    Sorry I'm treating this as a forum since there's no official forum for voltron. Cheers

    opened by defau1t 15
  • segfault on gdb 7.9

    segfault on gdb 7.9

    os: Ubuntu 15.04 gdb: GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9 elf file is https://github.com/ctfs/write-ups-2015/tree/master/defcon-qualifier-ctf-2015/reverse/pr0dk3y

    i do load the file with gdb: gdb ./pr0dk3y_40687b492c80205cccb34db1eabf6456 bp *0 to break as soon as it executes then info file, bpd 1 and bp *entry_point (this is to break on entry point since the elf has PIE)

    it will break and seems to work but as soon as i single step one or at most two instructions (either si/ni) gdb will segfault:

    0x0000555555554a65 in ?? ()
    /build/buildd/gdb-7.9/gdb/common/cleanups.c:265: internal-warning: restore_my_cleanups has found a stale cleanup
    A problem internal to GDB has been detected,
    further debugging may prove unreliable.
    
    This is a bug, please report it.  For instructions, see:
    <http://www.gnu.org/software/gdb/bugs/>.
    
    [1]    5903 abort (core dumped)  gdb pr0dk3y_40687b492c80205cccb34db1eabf6456
    

    or:

    Traceback (most recent call last):
      File "/usr/local/lib/python3.4/dist-packages/voltron-0.1-py3.4.egg/voltron/core.py", line 215, in run
        rfds, _, _ = select.select([serv, self.exit_pipe] + self.clients, [], [])
    InterruptedError: [Errno 4] Chiamata di sistema interrotta
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
        self.run()
      File "/usr/local/lib/python3.4/dist-packages/voltron-0.1-py3.4.egg/voltron/core.py", line 218, in run
        if ex[0] == errno.EINTR: # interrupted system call
    TypeError: 'InterruptedError' object is not subscriptable
    
    
    0x0000555555554a84 in ?? ()
    

    here is my gdb-init:

    source ~/coding_home/reversing/voltron/dbgentry.py                                                                                                                                                                                         
    voltron init                                                                                                                                                                                                                               
    
    #source ~/.fg_gdbinit
    

    i did both import and remove https://github.com/gdbinit/Gdbinit but still keeps on crashing.

    opened by ocean1 14
  • how to view the source code?

    how to view the source code?

    null

    opened by hxxful 0
  • voltron plugin git repository

    voltron plugin git repository

    Hey, I recently discovered voltron - and I love it. I developed a hackisch plugin to have a similiar source view as you show for lldb. With an arrow pointing to *$rip. And I will write a few others, steeling from gdbpwn and others. It would be cool to have some sort of official plugin repository where people can share their plugins with others without cluttering the main repository. What do you think about it? greets

    opened by mr-nice 0
  • gdb hangs when using Voltron

    gdb hangs when using Voltron

    Whenever I use Voltron to view the stack or registers, after the program finishes running gdb hangs, it doesn't even respond to ctrl-c signal, I have to manually close the terminal and restart gdb again. This only happens when voltron is launched, otherwise gdb functions properly.

    I am using Kali Linux, gdb version 10.1, Terminator as my terminal emulator.

    I am not sure how to troubleshoot this exactly and what more information I could provide, any help would be appreciated.

    opened by enticies 0
  • fix KEY ERROR of GDB debugger's target arch

    fix KEY ERROR of GDB debugger's target arch

    WSL2: kali-linux

    gdb: 10.2

    python: 3.9.2

    voltron successfully loaded

    however when I run voltron v r, I got an exception:

                                                                 [regs:general]
    Exception getting targets from debugger: KeyError('"i386"')
    

    main.log :

    2021-09-02 16:24:50,389 DEBUG        view.py:165              __init__ -- Loading view: RegisterView
    2021-09-02 16:24:50,389 DEBUG        view.py:180              __init__ -- View config: {'clear': True, 'update_on': 'stop', 'format': {'pygments_style': 'volarized', 'pygments_formatter': 'terminal256', 'label_format': '{0}', 'label_func': 'str_upper', 'label_colour': 'green', 'label_colour_en': True, 'value_format': '{0:0=16X}', 'value_func': None, 'value_colour': 'reset', 'value_colour_mod': 'red', 'value_colour_en': True, 'format_name': None, 'addr_colour': 'blue', 'divider_colour': 'green', 'string_colour': 'white', 'symbol_colour': 'cyan'}, 'header': {'show': True, 'pad': ' ', 'colour': 'blue', 'bg_colour': 'grey', 'attrs': [], 'label_left': {'name': 'info', 'colour': 'blue', 'bg_colour': 'grey', 'attrs': []}, 'label_right': {'name': 'title', 'colour': 'white', 'bg_colour': 'grey', 'attrs': ['bold']}}, 'footer': {'show': False, 'pad': ' ', 'colour': 'blue', 'bg_colour': 'grey', 'attrs': [], 'label_left': {'name': None, 'colour': 'blue', 'bg_colour': 'grey', 'attrs': []}, 'label_right': {'name': None, 'colour': 'blue', 'bg_colour': 'grey', 'attrs': ['bold']}}, 'pad': {'pad_right': 0, 'pad_bottom': 0}, 'keymap': {'q': 'exit', 'p': 'page_up', 'n': 'page_down', 'KEY_PPAGE': 'page_up', 'KEY_NPAGE': 'page_down', 'KEY_UP': 'line_up', 'KEY_DOWN': 'line_down', 'KEY_ENTER': 'reset'}, 'type': 'register', 'sections': ['general'], 'orientation': 'vertical'}
    2021-09-02 16:24:50,389 DEBUG        view.py:181              __init__ -- Args: Namespace(debug=False, o=[], subcommand='view', view='register', header=None, footer=None, name=None, orientation=None, sections=None, hide_info=False, func=<class 'register.RegisterView'>)
    2021-09-02 16:24:50,389 DEBUG        view.py:222                 setup -- Base view class setup
    2021-09-02 16:24:50,389 DEBUG        core.py:432          send_request -- Client sending request: {"type": "request", "request": "version", "block": false, "timeout": 10, "data": {}}
    2021-09-02 16:24:50,393 DEBUG        core.py:438          send_request -- Client received message: {"type": "response", "status": "success", "data": {"api_version": 1.1, "host_version": "GNU gdb (GDB) 10.2", "capabilities": ["async"]}}
    2021-09-02 16:24:50,393 DEBUG        core.py:432          send_request -- Client sending request: {"type": "request", "request": "targets", "block": false, "timeout": 10, "data": {}}
    2021-09-02 16:24:50,393 DEBUG        core.py:432          send_request -- Client sending request: {"type": "request", "request": "disassemble", "block": false, "timeout": 10, "data": {"target_id": 0, "address": null, "count": 1, "use_capstone": null}}
    2021-09-02 16:24:50,394 DEBUG        core.py:432          send_request -- Client sending request: {"type": "request", "request": "registers", "block": false, "timeout": 10, "data": {"target_id": 0, "thread_id": null, "registers": []}}
    2021-09-02 16:24:50,396 DEBUG        core.py:438          send_request -- Client received message: {"type": "response", "status": "error", "data": {"code": 4096, "message": "Exception getting targets from debugger: KeyError('\"i386\"')"}}
    2021-09-02 16:24:50,398 DEBUG        core.py:438          send_request -- Client received message: {"type": "response", "status": "error", "data": {"code": 4101, "message": "No such target"}}
    2021-09-02 16:24:50,398 DEBUG        core.py:438          send_request -- Client received message: {"type": "response", "status": "error", "data": {"code": 4101, "message": "No such target"}}
    2021-09-02 16:24:50,432 DEBUG        core.py:432          send_request -- Client sending request: {"type": "request", "request": "null", "block": true, "timeout": 10, "data": {}}
    2021-09-02 16:24:51,767 DEBUG        view.py:262               cleanup -- Cleaning up view
    

    while reading the source code, I found out the problem probably lies in the function get_arch(self) in plugins/debugger/dbg_gdb.py

            def get_arch(self):
                try:
                    arch = gdb.selected_frame().architecture().name()
                except:
                    arch = re.search('\(currently (.*)\)', gdb.execute('show architecture', to_string=True)).group(1)
                # pos_1
                return self.archs[arch]
    

    So I simply added a little code at # pos_1 and everything is fine now! ; ) ​

    opened by miner-y 0
  • fix bug for aarch64 in android

    fix bug for aarch64 in android

    fix bug for aarch64 and causing adb devices with emulator-5554 when using debuger

    opened by Simp1er 0
  • How to install on Fedora?

    How to install on Fedora?

    The python-yaml package isn't in dnf, and I'm not sure which package I can substitute.

    opened by Alekhine51 1
  • mac python2.7报错;饿

    mac python2.7报错;饿

    An error occurred while loading Voltron:

    Traceback (most recent call last): File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/voltron/entry.py", line 57, in import voltron File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/voltron/init.py", line 95, in setup_env() File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/voltron/init.py", line 31, in setup_env pkg_plugins=PluginDirectory('plugins', parent=PackageDirectory()) File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/env.py", line 49, in init self.add(**kwargs) File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/env.py", line 114, in add self._children[key].prepare() File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/file.py", line 439, in prepare self.load() File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/file.py", line 445, in load self._pm.load_plugins(self.path) File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/plugin.py", line 65, in load_plugins self.load_plugins(filepath) File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/scruffy/plugin.py", line 61, in load_plugins mod = imp.load_module(modname, file, path, descr) File "/Users/liumeng/Library/Python/2.7/lib/python/site-packages/voltron/plugins/debugger/dbg_lldb.py", line 579 log.warning(f"Exception when saving hook index for unregistering. {e}") ^ SyntaxError: invalid syntax

    Please ensure Voltron is installed correctly per the documentation: https://github.com/snare/voltron/wiki/Installation

    opened by liumengdeqq 2
  • LLDB Can't Load Python's Module

    LLDB Can't Load Python's Module

    I installed voltron successfully with ./install.sh -b lldb It automatically located python's version, which is python3.8, linked against with my lldb, and the installation processed well. But I start lldb, it reported errors like:

    An error occurred while loading Voltron:
    
    Traceback (most recent call last):
      File "/Users/haotianmichael/Library/Python/3.8/lib/python/site-packages/voltron/entry.py", line 57, in <module>
        import voltron
      File "/Users/haotianmichael/Library/Python/3.8/lib/python/site-packages/voltron/__init__.py", line 6, in <module>
        from .main import main
      File "/Users/haotianmichael/Library/Python/3.8/lib/python/site-packages/voltron/main.py", line 9, in <module>
        from .view import *
      File "/Users/haotianmichael/Library/Python/3.8/lib/python/site-packages/voltron/view.py", line 25, in <module>
        from .core import Client
      File "/Users/haotianmichael/Library/Python/3.8/lib/python/site-packages/voltron/core.py", line 16, in <module>
        from flask import Flask, Response, make_response, redirect, render_template, request
    ModuleNotFoundError: No module named 'flask'
    
    Please ensure Voltron is installed correctly per the documentation: https://github.com/snare/voltron/wiki/Installation
    
    

    I tapped python3.8 and imported flask, and it was good.

    $ python3.8
    $>>> import flask
    $>>> 
    

    And I ran voltron individually in its installed directory, and it didn't error ethier.

    $ voltron
    usage: voltron [-h] [--debug] [-o O] {view,v} ...
    voltron: error: the following arguments are required: subcommand
    

    But why lldb can't load this? And I'm sure python3.8 is default python version because voltron located it. No idea what's going on, any help will be appreciated! My machine:

    • Darwin Kernel Version 19.6.0(macOS Catalina)
    • lldb-1200.0.32.1 (Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1))
    • voltron
    opened by haotianmichael 1
  • Multiple debugging session with voltron

    Multiple debugging session with voltron

    Can we have a feature that support for multiple debugging session with voltron?

    image

    I suggest that we can choose a port randomly for Flask, and tell to voltron view client which one it needs to connect to

    opened by HarDToBelieve 1
Releases(v0.1.7)
Owner
snare
snare
An improbable web debugger through WebSockets

wdb - Web Debugger Description wdb is a full featured web debugger based on a client-server architecture. The wdb server which is responsible of manag

Kozea 1.5k Oct 12, 2021
Debugger capable of attaching to and injecting code into python processes.

DISCLAIMER: This is not an official google project, this is just something I wrote while at Google. Pyringe What this is Pyringe is a python debugger

Google 1.6k Oct 16, 2021
Monitor Memory usage of Python code

Memory Profiler This is a python module for monitoring memory consumption of a process as well as line-by-line analysis of memory consumption for pyth

Fabian Pedregosa 66 Oct 20, 2021
Full-screen console debugger for Python

PuDB: a console-based visual debugger for Python Its goal is to provide all the niceties of modern GUI-based debuggers in a more lightweight and keybo

Andreas Klöckner 2.2k Oct 26, 2021
Integration of IPython pdb

IPython pdb Use ipdb exports functions to access the IPython debugger, which features tab completion, syntax highlighting, better tracebacks, better i

Godefroid Chapelle 1.5k Oct 19, 2021
Graphical Python debugger which lets you easily view the values of all evaluated expressions

birdseye birdseye is a Python debugger which records the values of expressions in a function call and lets you easily view them after the function exi

Alex Hall 1.4k Oct 16, 2021
Hunter is a flexible code tracing toolkit.

Overview docs tests package Hunter is a flexible code tracing toolkit, not for measuring coverage, but for debugging, logging, inspection and other ne

Ionel Cristian Mărieș 642 Oct 13, 2021
A powerful set of Python debugging tools, based on PySnooper

snoop snoop is a powerful set of Python debugging tools. It's primarily meant to be a more featureful and refined version of PySnooper. It also includ

Alex Hall 643 Oct 23, 2021
Never use print for debugging again

PySnooper - Never use print for debugging again PySnooper is a poor man's debugger. If you've used Bash, it's like set -x for Python, except it's fanc

Ram Rachum 14.7k Oct 22, 2021
A drop-in replacement for Django's runserver.

About A drop in replacement for Django's built-in runserver command. Features include: An extendable interface for handling things such as real-time l

David Cramer 1.3k Oct 15, 2021
A drop-in replacement for Django's runserver.

About A drop in replacement for Django's built-in runserver command. Features include: An extendable interface for handling things such as real-time l

David Cramer 1.3k Oct 15, 2021
PINCE is a front-end/reverse engineering tool for the GNU Project Debugger (GDB), focused on games.

PINCE is a front-end/reverse engineering tool for the GNU Project Debugger (GDB), focused on games. However, it can be used for any reverse-engi

Korcan Karaokçu 1.1k Oct 15, 2021
pdb++, a drop-in replacement for pdb (the Python debugger)

pdb++, a drop-in replacement for pdb What is it? This module is an extension of the pdb module of the standard library. It is meant to be fully compat

null 814 Oct 5, 2021
pdb++, a drop-in replacement for pdb (the Python debugger)

pdb++, a drop-in replacement for pdb What is it? This module is an extension of the pdb module of the standard library. It is meant to be fully compat

null 816 Oct 24, 2021
Tracing instruction in lldb debugger.Just a python-script for lldb.

lldb-trace Tracing instruction in lldb debugger. just a python-script for lldb. How to use it? Break at an address where you want to begin tracing. Im

null 86 Oct 12, 2021
Run-time type checker for Python

This library provides run-time type checking for functions defined with PEP 484 argument (and return) type annotations. Four principal ways to do type

Alex Grönholm 740 Oct 20, 2021
Little helper to run Steam apps under Proton with a GDB debugger

protongdb A small little helper for running games with Proton and debugging with GDB Requirements At least Python 3.5 protontricks pip package and its

Joshie 16 Sep 3, 2021
Trace any Python program, anywhere!

lptrace lptrace is strace for Python programs. It lets you see in real-time what functions a Python program is running. It's particularly useful to de

Karim Hamidou 678 Oct 6, 2021
Cyberbrain: Python debugging, redefined.

Cyberbrain1(电子脑) aims to free programmers from debugging.

laike9m 2k Oct 19, 2021