我正在使用 Python 2.7 和 Python 3.1.3。但在我的 Python 中,我无法“导入 gdb”。
这给了我一个错误:
>>> import gdb
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
ImportError: No module named gdb
>>>
这是什么原因?我该如何解决这个问题?
最佳答案
import gdb
仅当您的 Python 代码在 GDB 进程中运行时才有效。它不应该在常规系统 Python 解释器中工作。
说明
- GDB 嵌入了 Python 解释器,因此它可以使用 Python 作为扩展语言。
- 你不能只是
import gdb
from/usr/bin/python
就像它是一个普通的 Python 库一样,因为 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')
运行:
$ gdb -q -x t.py
您会看到 exit()
的 PLT stub 被反汇编。在 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.
我收集了一些关于学习 GDB Python API here 的资源.
关于python - 如何在 Python 中导入 'GDB',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792483/