打开 python 核心转储后调试器中的 Python shell

Posted

技术标签:

【中文标题】打开 python 核心转储后调试器中的 Python shell【英文标题】:Python shell in debugger after opening a python core dump 【发布时间】:2018-04-09 13:18:52 【问题描述】:

我有一个正在运行的 CPython 程序的核心转储,并希望在转储进程的上下文中执行 Python 代码。

我已使用gdb python core-dump-file 将核心和解释器加载到 gdb 中。

我知道python-interactive,但它看不到上下文(例如:import sys; sys.modules 没有给我任何进程的模块)

我该怎么做?

如果这是唯一可能的方法,我不介意调用 CPython 的 C 函数。

【问题讨论】:

【参考方案1】:

1) 首先检查你的gdb是否是用python从源代码构建的。

您可以通过以下方式(在 gdb 提示符中)执行此操作:

(gdb) python print("Hi from python")

如果您想检查系统中的 python 版本,请尝试:

(gdb) python import sys
(gdb) python print(sys.version)

如果这些命令失败。这可能意味着您的 gdb 从一开始就没有使用 python 支持构建。

您应该从源代码构建 gdb,并在配置步骤中添加 --with-python="Path to python"

例如。

./configure --with-python=/usr/bin/python36

希望这会有所帮助!

【讨论】:

以上是关于打开 python 核心转储后调试器中的 Python shell的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法用 Xcode 打开(任意)核心转储?

C中的另一个核心转储问题

Linux 中的核心转储

如何使用 VSCode 调试 Linux 核心转储?

gdb 调试远程核心转储

如何调试阿帕奇?我在哪里可以找到核心转储