麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo

简介: 本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。

前言

  本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。


使用gdb定位Qt的release(国产麒麟系统)

步骤一:新建立一个简单的应用

  

网络异常,图片无法展示
|

步骤二:造崩溃代码

DumpWidget::DumpWidget(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::DumpWidget),
    _pTimer(0)
{
    ui->setupUi(this);
    LOG << _pTimer;
#if 0
    if(!_pTimer)
    {
        _pTimer = new QTimer(this);
    }
#endif
    LOG << _pTimer;
    connect(_pTimer, SIGNAL(timeout()), this, SLOT(slot_timeout()));
    LOG << _pTimer;
    _pTimer->setInterval(1000);
LOG << _pTimer;
}

  

网络异常,图片无法展示
|

步骤三:运行崩溃

  

网络异常,图片无法展示
|

步骤四:为了更好的看到效果,加3s延迟

  

网络异常,图片无法展示
|

  

网络异常,图片无法展示
|

  

网络异常,图片无法展示
|

步骤五:定位到coredump文件

  默认目录/var/lib/system/coredump

  

网络异常,图片无法展示
|

  没有,怎么弄国产麒麟系统都不会有得,因为生成在/tmp目录下了,查看“入坑一”:

  

网络异常,图片无法展示
|

步骤六:定位位置

  

网络异常,图片无法展示
|

  因为Demo堆栈不多,就一层,所以很容易定位,而实际程序可能达到几兆,几十兆,几百兆甚至1~2个GB。

  这里为了再次确认,gdb调试release版本没有添加任何额外pro语句尝试了一次:

  

网络异常,图片无法展示
|

  (注意:不知道ubuntu是否这样可以,目前通过其他方法都需要加g或者qmake,这个持保留意见,后续进一步了解再补充了)

  (注意:后续通过“模拟实战”,发现能定位给到错误的函数,但是没有行号。)


模拟实战

  先加了一句代码:

  

网络异常,图片无法展示
|

  运行崩溃:

  

网络异常,图片无法展示
|

  定位coredump文件:

  

网络异常,图片无法展示
|

  然后使用gdb的方法:

  

网络异常,图片无法展示
|

  

网络异常,图片无法展示
|

  定位不到,这个时候再按一下回车:

  

网络异常,图片无法展示
|

(注意:发现能定位给到错误的函数,但是没有行号。)


现场另外一种情况

  

网络异常,图片无法展示
|

  这个情况结合很早之前烤机的bug,QDateTime::currentDataTime().toString(“yyyy-MM-dd hh:mm:ss:zzz”)出现乱码,跑起来偶尔出现乱码,就会一直乱码,启动非乱码则非乱码,这个是qt和麒麟的兼容性问题,后续再议。


入坑

入坑一:没有生成coredump文件

问题

  默认目录/var/lib/system/coredump,目录为空,试了其他方法也不行。

原理

  默认生成在了/tmp目录下了,而不是coredump目录下。

  使用其他ulimit -c unlimited也不会,国产麒麟系统是对系统很多默认配置和路径做了强制修改的。

解决

  默认生成在了/tmp目录下了

  

网络异常,图片无法展示
|

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
26天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
42 1
|
25天前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
382 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
87 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
16天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
32 2
|
1月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
84 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
185 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
47 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)