You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python进程崩溃转储中获取Python层调用栈与变量信息

问题解答

可以实现和纯C守护进程场景同等粒度的问题定位,同时能获取崩溃前最后调用的Python函数名称和对应上下文变量值,具体操作步骤如下:

前置准备

首先需要安装对应版本Python的调试符号包:

  • Debian/Ubuntu 系列:安装python3-dbg(Python2对应python-dbg)
  • RHEL/CentOS 系列:安装python3-debuginfo
    如果是自行编译的Python,编译时需要添加--with-pydebug参数生成调试符号。

核心分析步骤

  1. 用gdb加载core dump:gdb python python-dump.core
  2. 执行Python专属栈回溯命令:
    • 要获取Python调用栈:执行py-bt,会输出从CherryPy请求入口到触发ctypes调用的所有Python函数名称、所在文件、行号,和常规Python异常栈格式一致
    • 要获取上下文变量:执行py-bt-full,会在栈信息基础上附带每个栈帧的Python局部变量、入参值,也可以在定位到对应栈帧后用py-print 变量名打印指定变量的实际值
  3. 关联C栈和Python栈:执行默认bt命令获取完整C调用栈,配合py-bt的输出即可一一对应,既可以拿到C层的函数调用、入参信息,也可以拿到上层Python调用的全链路信息。

常见异常处理

如果gdb没有自动识别Python专属命令,可以手动加载调试扩展脚本:source /usr/share/gdb/auto-load/usr/bin/python3.x-gdb.py,把路径替换为你系统中对应Python版本的gdb扩展脚本实际路径即可。
需要保证分析用的Python版本和生成core dump时的服务运行Python版本完全一致,否则会出现符号不匹配无法解析的问题。

内容的提问来源于stack exchange,提问作者lucifer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:51:01