麟系统开发笔记(十):在国产麒麟系统上使用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
相关文章
|
2月前
|
jenkins 测试技术 应用服务中间件
【专业测试技能】全流程掌握:部署测试环境的策略与实践
本文分享了关于部署测试环境的策略与实践。文章讨论了部署测试环境的全过程,包括服务如MySQL、Redis、Zookeeper等的部署,以及解决服务间的依赖和兼容问题。文中还介绍了使用Jenkins、Docker等工具进行部署的方法,并通过实战案例讲解了如何创建和管理Jenkins Job、配置代理服务器Nginx、进行前后端服务的访问和优化。最后,作者强调了提问的重要性,并鼓励大家通过互联网解决遇到的问题。
66 2
【专业测试技能】全流程掌握:部署测试环境的策略与实践
|
19天前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
21天前
|
运维 测试技术
拆分软件测试流程,一张图秒杀所有面试
本文主要介绍了软件测试流程的核心内容,包括需求分析、测试用例编写、测试执行、缺陷提交及回归测试等关键步骤。以迭代测试为例,详细说明了每个环节的具体操作和注意事项,并提供了一张测试流程图以便理解。测试流程确保了软件质量,是面试中常见的考察点。
35 7
拆分软件测试流程,一张图秒杀所有面试
|
25天前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。
|
25天前
|
人工智能 计算机视觉
AI计算机视觉笔记十五:编写检测的yolov5测试代码
该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。
|
25天前
|
机器学习/深度学习 人工智能 文字识别
AI计算机视觉笔记二十:PaddleOCR环境搭建及测试
OCR技术广泛应用于日常生活中,与人脸识别一样常见。PaddleOCR是一个基于飞桨的OCR工具库,具有超轻量级中文OCR模型,支持中英文数字组合、竖排及长文本识别。本文档详细介绍了PaddleOCR的学习过程,包括环境搭建、安装、样本标注及测试步骤。使用AutoDL云平台进行环境创建,并提供了详细的命令行操作指南,帮助用户顺利完成PaddleOCR的部署与测试。
|
1月前
|
机器学习/深度学习 人工智能 数据处理
AI计算机视觉笔记六:mediapipe测试
MediaPipe是由Google Research开发并开源的多媒体机器学习框架,已被集成到YouTube、Google Lens等重要产品中。该框架支持多种功能,如物体检测、自拍分割、头发分割、人脸检测、手部检测及运动追踪等。本文档将指导你通过Python环境搭建与测试MediaPipe,包括创建虚拟环境、安装依赖库,并进行手指骨骼识别测试。具体步骤涵盖环境配置、摄像头数据处理及结果显示。
|
2月前
|
敏捷开发 jenkins 测试技术
自动化测试之美:打造高效软件测试流程
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一艘航船,引导着项目向着质量的灯塔航行。本文将揭开自动化测试的神秘面纱,从基础理论到实践操作,一步步构建起你的测试框架。你将学会如何编写实用的测试脚本,并将其融入日常开发,最终让测试成为敏捷开发不可或缺的力量。让我们启航,探索自动化测试的世界,确保代码之船稳健前行。
|
1月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记十四:YOLOV5环境搭建及测试全过程
本文详细记录了在Windows 10环境下从零开始搭建yolov5环境并进行测试的全过程,涵盖环境配置、依赖安装及模型测试等关键步骤。文章首先介绍了所需环境(Python 3.8、yolov5-5.0),接着详细说明了如何使用Miniconda3创建与激活虚拟环境,并通过具体命令演示了如何下载安装yolov5及相关依赖库。最后,通过一系列命令展示了如何下载预训练模型并对示例图像进行目标检测,同时解决了一些常见错误。适合初学者跟随实践。如需转载,请注明原文出处。
|
2月前
|
敏捷开发 测试技术 持续交付
自动化测试的魔法:打造高效软件测试流程
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一艘能够自动导航的船,引领着项目团队向着高效率和高质量的彼岸前进。本文将揭开自动化测试的神秘面纱,分享如何构建一个高效的自动化测试流程,并通过实际代码示例,展示自动化测试的强大魔力。让我们一起启航,探索自动化测试的世界!
下一篇
无影云桌面