4 ms·
GDB can decode Python stack traces as Python code, as long as you have have python-gdb.py from the Python source distribution in the same place as your Python e
by fmajid 4y ago
GDB can decode Python stack traces as Python code, as long as you have have python-gdb.py from the Python source distribution in the same place as your Python executable.
- winter_blue 4y agoWow, that's pretty amazing. I wonder how it's implemented, and if there are any tutorials on implementing something similar, for programming language designers/creators.
- bobbyi 4y agoTheres also Py Spy, a profiling tool that can generate flame charts containing a mix of python and C (or C++) calls. https://github.com/benfred/py-spy https://github.com/benfred/py-spy It's worked really well for my needs
- misnome 4y agopy-spy also makes it very easy to scrape from existing processes, which is invaluable if you are e.g. ever trying to diagnose a deadlock
- vmiklos 4y agoI think it uses gdb's frame filter API: https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Frame-Filter.html https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Frame-Fi...
- fmajid 4y agoGDB itself is fully scriptable in Python: https://sourceware.org/gdb/current/onlinedocs/gdb.html/Python.html#Python https://sourceware.org/gdb/current/onlinedocs/gdb.html/Pytho...
- deleted 4y ago[deleted]
- westurner 4y agoFrom https://github.com/jupyterlab/debugger/issues/284 https://github.com/jupyterlab/debugger/issues/284 en ENH: Mixed Python/C debugging (GDB,) #284 > "Users can do [mixed mode] debugging with GDB (and/or other debuggers) and log the session in a notebook; in particular in order to teach. > Your question is specifically about IDEs with support for mixed-mode debugging (with gdb), so I went looking for an answer: > https://wiki.python.org/moin/DebuggingWithGdb https://wiki.python.org/moin/DebuggingWithGdb (which is not responsive and almost unreadable on a mobile device) links to https://fedoraproject.org/wiki/Features/EasierPythonDebugging https://fedoraproject.org/wiki/Features/EasierPythonDebuggin... , which mentions the py-list, py-up and py-down, py-bt, py-print, and py-locals GDB commands that are also described in * https://devguide.python.org/gdb/ https://devguide.python.org/gdb/ * > https://wiki.python.org/moin/PythonDebuggingTools https://wiki.python.org/moin/PythonDebuggingTools Ctrl-F "gdb" mentions: DDD, pyclewn (vim), trepan3k (which is gdb-like and supports breaking at c-line and also handles bytecode disassembly) > Apparently, GHIDRA does not have a debugger but there is a plugin for following along with gdb in ghidra called https://github.com/Comsecuris/gdbghidra https://github.com/Comsecuris/gdbghidra [...] https://github.com/Comsecuris/gdbghidra/blob/master/data/gdb_ghidra_bridge_client.py https://github.com/Comsecuris/gdbghidra/blob/master/data/gdb... (zero dependencies) > https://reverseengineering.stackexchange.com/questions/1392/decent-gui-for-gdb https://reverseengineering.stackexchange.com/questions/1392/... lists a number of GUIs for GDB; including voltronnn: >> There's Voltron, which is an extensible Python debugger UI that supports LLDB, GDB, VDB, and WinDbg/CDB (via PyKD) and runs on macOS, Linux and Windows. For the first three it supports x86, x86_64, and arm with even arm64 support for lldb while adding even powerpc support for gdb. https://github.com/snare/voltron https://github.com/snare/voltron > "The GDB Python API" https://developers.redhat.com/blog/2017/11/10/gdb-python-api/ https://developers.redhat.com/blog/2017/11/10/gdb-python-api... describes the GDB Python API. > https://pythonextensionpatterns.readthedocs.io/en/latest/debugging/debug_in_ide.html#writing-a-c-function-to-call-any-python-unit-test https://pythonextensionpatterns.readthedocs.io/en/latest/deb... may be helpful [for writing-a-c-function-to-call-any-python-unit-test] > The GDB Python API docs: https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html > The devguide gdb page may be the place to list IDEs with support for mixed-mode debugging of Python and C/C++/Cython specifically with gdb? These days, we have CFFI and Apache Arrow for C+Python etc.
- planede 4y agoWhat I would love is also to be able to set python breakpoints from gdb. And integration with rr, so I could reverse-continue to said breakpoints. And ponies.
- mort96 4y agoGDB does so much cool. It just sucks that it's missing a high quality front-end. I know there are a bunch out there, but they all seem pretty janky and get confused a lot; I just want a really serious group of people (some Red Hat people for example) to make a high quality native debugging app which properly speaks the GDB protocol and handles all the edge cases. (And no, I don't want it integrated into an IDE.)
- ttyprintk 4y agoThis has been packaged as Tools/gdb/libpython.py lately.