2010-08-14 37 views
20

我正在運行Python GUI應用程序。我想從它調用和控制GDB,比如加載一個可執行文件,設置斷點等等。我看到GDB有一個命令行界面,可以通過向GDB進程發送字符串來使用,但是我想以Python方式。有沒有gdb.py?我看到「archer」分支有類似「import gdb」的分支,但它在Ubuntu默認的Python安裝中不起作用。我在哪裏可以得到這個模塊或者是否有其他方法來從Python控制GDB?從Python中調用並控制GDB

+0

A如何做ABC問題:http://stackoverflow.com/questions/4060565/how-to-script-gdb-with-python-example-add-breakpoints-run-what-breakpoint-d – 2015-07-04 21:49:58

回答

16

是的,你可以從Python控制GDB。 Python文檔位於http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python

如果你想一些腳本的例子,看看http://tromey.com/blog/?p=548

+0

thx 。我已經在我的問題中提到了這個弓箭手分支。這似乎是一項正在進行中的工作。我要給它一個鏡頭。但我真正想要的是一個與現有GDB掛鉤的python模塊,而不是射手之一。 – Seeker 2010-08-17 06:01:51

2

pygdbmi是你想要的。

有了它,我能夠使用從Python的復位嵌入目標執行以下操作:

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提供了更冷卻器的例子。