如何导入&x27;GDB&x27;用Python

如何导入&x27;GDB&x27;用Python,python,gdb,Python,Gdb,我正在使用Python2.7和Python3.1.3。但在我的Python中,我无法“导入gdb” 这给了我一个错误: >>> import gdb Traceback (most recent call last): File "<interactive input>", line 1, in <module> ImportError: No module named gdb >>> 导入gdb 回溯(最近一次呼叫最后一次):

我正在使用Python2.7和Python3.1.3。但在我的Python中,我无法“导入gdb”

这给了我一个错误:

>>> import gdb
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ImportError: No module named gdb
>>>
导入gdb 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:没有名为gdb的模块 >>>
这是什么原因?我应该如何解决这个问题?

我现在无法测试,但我认为您需要配置并构建一个支持Python的GDB。看看这个

我希望这有帮助

我想这已经过时了。无论如何,您总是需要构建和配置一个支持Python的GDB

您可以使用Python编程语言编写GDB脚本。仅当GDB是使用python配置的时,此功能才可用

您必须使用该选项配置GDB:

--with-python=location
其中
location
是您希望与GDB一起使用的python的位置。

您可以按照安装。这取决于一个

对于Windows,最近有一个足够多的插件,但它似乎没有包含可以导入的Python模块(仍然支持gdb中的Python脚本)。您必须安装gbd包,然后使用
mingw get install gdb

如果您使用的话,最近又出现了一个足够多的gdb,没有Python模块,但是支持Python脚本


我认为在任何一个平台上都可以从源代码构建gdb并获取Python模块。

导入gdb
仅当您的Python代码在gdb进程中运行时才起作用。它不应该在常规的系统Python解释器中工作

解释
  • GDB嵌入了Python解释器,因此它可以使用Python作为扩展语言
  • 您不能像导入普通python库一样,只从
    /usr/bin/python
    导入gdb,因为gdb的结构不是库
  • 您可以做的是从gdb中
    source MY-SCRIPT.py
    (相当于运行
    gdb-x MY-SCRIPT.py
示例程序 下面是一个独立的示例。将下面的文件保存到
t.py

import gdb
gdb.execute('file /bin/cat')
o = gdb.execute('disassemble exit', to_string=True)
print(o)
gdb.execute('quit')
运行:

您将看到
exit()
反汇编的PLT存根。在x86-64 Linux上:

Dump of assembler code for function exit@plt:
   0x0000000000401ae0 <+0>:  jmpq   *0x20971a(%rip)    # 0x60b200 <exit@got.plt>
   0x0000000000401ae6 <+6>:  pushq  $0x3d
   0x0000000000401aeb <+11>: jmpq   0x401700
End of assembler dump.
函数的汇编程序代码转储exit@plt:
0x0000000000401ae0:jmpq*0x20971a(%rip)#0x60b200
0x0000000000401ae6:pushq$0x3d
0x0000000000401EB:jmpq 0x401700
汇编程序转储结束。

我收集了一些学习GDB Python API的资源。

我在调试Webkit时遇到了类似的情况:

$ python Tools/gdb/webkit.py
Traceback (most recent call last):
  File "Tools/gdb/webkit.py", line 38, in <module>
    import gdb
ImportError: No module named gdb

希望这能有所帮助。

也许你在这方面做过一次阿尔伯特杜的工作。因为我无法理解链接中给出的文档。你能给我指点一下吗?在你的问题中你没有提供足够的信息。你是从哪里听说这个文件的,你希望它做什么?您想要实现什么?按照您使用的操作系统中的描述在python中使用gdb?您可能需要安装python GDB包。PythonGDB不包含任何此名称的文件(至少在我的安装中没有)。但在中有一个同名文件。根据给出的信息,这意味着无法确定OP的目标。不过,有一个gdb模块,因此他确实可以导入gdb。您能够在Windows上自行运行gdb吗?你是怎么安装的?唉,MinGW的gdb中没有gdb模块。好的,胰头,我会尽量提供更多的信息。我在WINDOWS XP中工作,试图在PYTHONWIN32中构建一个脚本,我编写这个脚本是为了让它调用MinGW提供的shell,在那里它必须运行gdb。在这个gdb python脚本中运行我的程序。一切都必须由python脚本控制。第一层->Python脚本第二层->gdb第三层->我的程序。我用自己的gdb构建,Python从内部工作
(gdb)Python打印(“hello”)
工作正常,但是
(gdb)Python导入gdb
不工作。(信息与原始问题相同)。我使用
/configure--with python
从头构建了GDB7.9。你知道为什么它仍然不起作用吗?我只想使用STL调试的漂亮打印功能。@MarkLakata,我怀疑您没有正确安装gdb,尤其是gdb在
——使用gdb datadir
下查找的文件。尝试
strace-eopen gdb
并盯着与python相关的路径,假设您在Linux上
gdb.command
是从红帽系统gdb中的
/usr/share/gdb/python/gdb/command/\uuu init\uuuu.py
导入的。呃,我确实安装了gdb,但它没有安装在
/usr
中(我们需要在我们的平台上支持多个版本)。好的,谢谢你的指点。FWIW gdb维护人员似乎认为这也应该在gdb之外工作,请参阅
$ python Tools/gdb/webkit.py
Traceback (most recent call last):
  File "Tools/gdb/webkit.py", line 38, in <module>
    import gdb
ImportError: No module named gdb
(gdb) source Tools/gdb/webkit.py
(gdb) p run
$1 = (const WebCore::TextRun &) @0x7fffffffa450: {m_characters = "Plugin Testsa", m_len = 12, m_xpos = 0, 
  m_padding = 0, m_allowTabs = false, m_rtl = false, m_directionalOverride = false, 
  m_applyRunRounding = true, m_applyWordRounding = true, m_disableSpacing = false}