Bug定位及调试方法

博客介绍了faulthandler模块,当Python解释器崩溃或无法提供有用回溯信号时,该模块能提供信息找出问题,还给出排查方法,可定位出错代码行。此外,讲述了将Python中np或tensor数组保存到本地并传递给C++,可采用xml文件形式存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

faulthandler模块

当我们遇到python解释器崩溃或由于其他未知原因导致无法提供有用的回溯信号时,例如:
模型在训练的时候停止并仅打印:segmentation fault(core dumped)
例如,如果你的程序由于段错误(segfault)或者堆栈溢出而崩溃,那么faulthandler就能提供有用的信息来帮助你找出问题所在。
参考方案:ps -aux | grep python 查看是否有太多进程

排查方法

way1:

python -X faulthandler your_script.py

way2:
利用python3的faulthandler,可定位到出错的代码行
在python代码开头:

import faulthandler
faulthandler.enable()
# 后边正常写你的代码
res = 1 / 0

numpy数据在C++中的读写(cv::mat):

我们将python中的np或tensor数组保存到本地,并传递给C++, 可以采用xml文件的形式存储;
具体方式举例:

#notice how its almost exactly the same, imagine cv2 is the namespace for cv 
#in C++, only difference is FILE_STORGE_WRITE is exposed directly in cv2
cv_file = cv2.FileStorage("test.xml", cv2.FILE_STORAGE_WRITE)

# 定义数据
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
cv_file.write("my_mat", matrix)			# “my_mat” 是写入到xml中矩阵的名字
cv_file.release()

参考:python:如何用cv2从xml/yaml文件中读写矩阵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值