2024-05-23 06:00:00 发布
网友
我使用的是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 >>>
这是什么原因?我该如何解决这个问题?
您可以按照this tutorial安装PythonGDB。Python code依赖于C extension。
对于Windows,在MinGW中有一个足够新的gdb build,但它似乎不包括可以导入的Python模块(仍然支持gdb中的Python脚本)。您必须install MinGW,然后使用mingw-get install gdb安装gbd包。
mingw-get install gdb
如果您使用Cygwin,那么Cygwin Ports中又有一个足够新的gdb,没有Python模块,但是有Python脚本支持。
我想在任何一个平台上都可以从源代码构建gdb并获得Python模块。
我现在无法测试,但我认为您需要配置和构建一个支持Python的GDB。看看这个guide。
我希望这会有帮助。
我想这已经过时了。无论如何,您始终需要构建和配置启用Python的GDB。
You can script GDB using the Python programming language. This feature is available only if GDB was configured using --with-python.
--with-python
您必须使用该选项配置GDB:
--with-python=location
其中location是要与GDB一起使用的python的位置。
location
import gdb仅当您的Python代码在GDB进程中运行时才起作用。它不应该在常规的系统Python解释器中工作。
import gdb
/usr/bin/python
source MY-SCRIPT.py
gdb -x MY-SCRIPT.py
这里有一个独立的例子。将下面的文件保存到t.py:
t.py
import gdb gdb.execute('file /bin/cat') o = gdb.execute('disassemble exit', to_string=True) print(o) gdb.execute('quit')
运行:
$ gdb -q -x t.py
您将看到exit()的PLT存根被反汇编。在x86-64 Linux上:
exit()
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.
我收集了一些关于学习GDB Python API here的资源。
您可以按照this tutorial安装PythonGDB。Python code依赖于C extension。
对于Windows,在MinGW中有一个足够新的gdb build,但它似乎不包括可以导入的Python模块(仍然支持gdb中的Python脚本)。您必须install MinGW,然后使用
mingw-get install gdb
安装gbd包。如果您使用Cygwin,那么Cygwin Ports中又有一个足够新的gdb,没有Python模块,但是有Python脚本支持。
我想在任何一个平台上都可以从源代码构建gdb并获得Python模块。
我现在无法测试,但我认为您需要配置和构建一个支持Python的GDB。看看这个guide。
我希望这会有帮助。
我想这已经过时了。无论如何,您始终需要构建和配置启用Python的GDB。
您必须使用该选项配置GDB:
其中
location
是要与GDB一起使用的python的位置。import gdb
仅当您的Python代码在GDB进程中运行时才起作用。它不应该在常规的系统Python解释器中工作。解释
/usr/bin/python
中import gdb
,因为GDB不是一个库。source MY-SCRIPT.py
(相当于运行gdb -x MY-SCRIPT.py
)。示例程序
这里有一个独立的例子。将下面的文件保存到
t.py
:运行:
您将看到
exit()
的PLT存根被反汇编。在x86-64 Linux上:我收集了一些关于学习GDB Python API here的资源。
相关问题 更多 >
编程相关推荐