我使用的是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
>>>
Run Code Online (Sandbox Code Playgroud)
这是什么原因?我该如何解决这个问题?
sco*_*ttt 34
import gdb仅在Python代码在GDB进程中运行时才有效.它不应该从常规系统Python解释器工作.
import gdb从/usr/bin/python喜欢它的一个普通的Python库,因为GDB不规整为库.source MY-SCRIPT.py从gdb(相当于运行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')
Run Code Online (Sandbox Code Playgroud)
跑:
$ gdb -q -x t.py
Run Code Online (Sandbox Code Playgroud)
你会看到PLT存根被exit()拆解了.在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.
Run Code Online (Sandbox Code Playgroud)
我一直在学习Python的GDB API收集了一些资源在这里.
我现在无法测试,但我认为你需要配置和构建一个支持Python的GDB。看看这个指南。
我希望这有帮助。
我认为这已经过时了。无论如何,您始终需要构建和配置支持 Python 的 GDB。
您可以使用 Python 编程语言编写 GDB 脚本。仅当使用配置 GDB 时,此功能才可用
--with-python。
您必须使用该选项配置 GDB:
--with-python=location
Run Code Online (Sandbox Code Playgroud)
location您想要使用 GDB 的 python 的位置在哪里。