打开 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的主要内容,如果未能解决你的问题,请参考以下文章