python - 如何在 Python 中导入 'GDB'

标签 python gdb

我正在使用 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/

相关文章:

python - 将数据库数据从 DEV 移动到 PRODUCTION,最佳实践?

unix - 无法进入系统调用源代码

c - 使用 GDB 进行 MPI 调试 - 当前上下文中没有符号 "i"

python - GDB自动加载Python脚本

python - 创建一个python列表,一个指针指向两个地方

python - 如何使用 numpy.argsort() 作为二维以上的索引?

python - 从类定义中的列表理解访问类变量

python - 警告 - 试图在切片的副本上设置值

gdb - 按 Enter 时停止 gdb 重复最后一个(第三方)命令

c - 优胜美地 : SIGBUS error when calling function at gdb command line 上的 gdb