28

I am running a Python GUI application. I want to invoke and control GDB from it, like load an executable file, set breakpoints etc. I see that GDB has a command line interface which can be used by sending strings to the GDB process, but I want to do it the Python way. Is there a gdb.py? I see that "archer" branch has something like "import gdb", but it doesn't work in Ubuntu's default installation of Python. Where do I get this module or is there any other method to control GDB from Python?

1

2 Answers 2

22

Yes, you can control GDB from Python. The Python documentation is at http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python.

If you want an example of some scripting, take a look at http://tromey.com/blog/?p=548

Sign up to request clarification or add additional context in comments.

1 Comment

thx. i've mentioned this archer branch in my question already. it seems to be a work-in-progress. i'm going to give it a shot. but what i actually want is a python module that hooks up with existing GDB, not the archer one.
10

pygdbmi is what you want.

With it I was able to reset an embedded target from Python using the following:

from pygdbmi.gdbcontroller import GdbController
if __name__ == '__main__':
    gdbmi = GdbController()
    response = gdbmi.write('b main')
    response = gdbmi.write('target remote localhost:2331')
    response = gdbmi.write('mon reset 0')
    response = gdbmi.write('c')

gdbgui provides a much cooler example.

1 Comment

Current pygdbmi home page: cs01.github.io/pygdbmi

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.