Python Segmentation fault错误定位办法

ops/2024/12/17 2:34:24/

1. 说明

Python3执行某一个程序时,报Segmentation fault (core dumped)错,但没有告知到底哪里出错,无法查问题,这时就需要一个库faulthandler来帮助分析。

2. 安装faulthandler

faulthandler在Python3.3之后成为标准库,对于以前的版本运行如下命令

pip install pytest-faulthandler

3. Python3使用faulthandler

3.1. 使用方式

可以通过import到代码中启用,也可以直接通过命令行来启用。

通过import到代码中来启用:

python">import faulthandler
# 在import之后直接添加以下启用代码即可faulthandler.enable()
# 后边正常写你的代码

直接通过命令行来启用,运行时添加-X faulthandler参数即可:

python3 -X faulthandler my_script.py

3.2. 使用效果演示

代码示例(建议在linux上运行该代码):

python">import tracebackdef test_segmentation_fault():# 对于segmentation fault并不能catch到异常,即此处try没效果try:ctypes.string_at(0)except Exception as e:print(traceback.format_exc())if __name__ == "__main__":test_segmentation_fault()

如下图所示,在未使用faulthandler时try不生效完全不知道哪里出了问题,在使用faulthandler后能打印出导致退出的地方:

4. Python2使用faulthandler

faulthandler在Python2中不是标准库,需要另行安装。(另外随着faulthandler在Python3中成为标准库及Python2不再维护,作者也不再更新faulthandler)

pip install faulthandler

由于Python2也不支持-X参数,所以faulthandler在Python2中只能通过import到代码中来启用

python">import faulthandler
# 在import之后直接添加以下启用代码即可
faulthandler.enable()
# 后边正常写你的代码

参考文献

Python Segmentation fault错误定位办法 - 诸子流 - 博客园

python遇到Segmentation fault (core dumped)调试方法 - DoubleLi - 博客园

faulthandler —— 转储 Python 的跟踪信息 — Python 3.10.2 文档


http://www.ppmy.cn/ops/142519.html

相关文章

题目 2780: 奇偶数判断

题目 2780: 奇偶数判断 时间限制: 2s 内存限制: 192MB 提交: 11198 解决: 6848 题目描述 给定一个整数,判断该数是奇数还是偶数。 输入格式 输入仅一行,一个大于零的正整数n。 输出格式 输出仅一行,如果n是奇数,输出odd&#xff1…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

【Java】链接数据库简介

JDBC基本原理 JDBC 提供了一套通用的接口,允许 Java 程序与不同类型的数据库进行交互。 JDBC 是 Java 提供的一种用于与数据库通信的 API(应用程序编程接口),定义了 Java 程序如何与数据库进行连接、执行查询、操作数据等。JDBC…

Elasticsearch Serverless 中的数据流自动分片

作者:来自 Elastic Andrei Dan 在 Elastic Cloud Serverless 中,我们根据索引负载自动为数据流配置最佳分片数量,从而使用户无需摆弄分片。 传统上,用户会更改数据流的分片配置,以处理各种工作负载并充分利用可用资源。…

【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行

目录 项目介绍 显存占用 11月21 新增纹理烘焙模块Dust3R 烘焙相关参数: AutoDL云端镜像 启动说明 标准模型下载 【1212更新】腾讯混元Hunyuan3D-1文图生3D模型云端镜像一键运行 项目介绍 https://github.com/Tencent/Hunyuan3D-1 腾讯混元 3D 生成模型,支持…

期权懂|个人投资者可以交易期权吗?

期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 个人投资者可以交易期权吗? 个人投资者是可以交易期权的,但需要满足一定的条件和通过特定的途径。 一、个人投资者交易条件 (1)资金…

ES(elasticsearch)

文章目录 介绍在springboot项目集成ES操作步骤 介绍 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量的数据。Elasticsearch 常用于全文搜索、结构化搜索、日志分析、实时应用监控等场景。 在springboot项目集成…

扫清C#泛型的迷障 - 从基础到实战

什么是泛型? 泛型(Generics)是C#的一种特性,它允许你在编写代码时,不指定具体的类型,而是使用类型参数作为占位符。这样一来,你的代码就可以对多种类型进行复用,增加了灵活性&#…