麒麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129858821
红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…
国产麒麟系统相关开发
前言
本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。
使用gdb定位Qt的release(国产麒麟系统)
步骤一:新建立一个简单的应用
步骤二:造崩溃代码
DumpWidget::DumpWidget(QWidget *parent) :QMainWindow(parent),ui(new Ui::DumpWidget),_pTimer(0)
{ui->setupUi(this);LOG << _pTimer;
#if 0if(!_pTimer){_pTimer = new QTimer(this);}
#endifLOG << _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和麒麟的兼容性问题,后续再议。
这部分遗留问题,已经在下一篇文章中得到了解决,并且做了专项测试:《麒麟系统开发笔记(十一):在国产麒麟系统上使用gdb定位崩溃异常方法流程进阶定位代码行数及专项测试Demo》
入坑
入坑一:没有生成coredump文件
问题
默认目录/var/lib/system/coredump,目录为空,试了其他方法也不行。
原理
默认生成在了/tmp目录下了,而不是coredump目录下。
使用其他ulimit -c unlimited也不会,国产麒麟系统是对系统很多默认配置和路径做了强制修改的。
解决
默认生成在了/tmp目录下了
上一篇:《麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo》
下一篇:《麒麟系统开发笔记(十一):在国产麒麟系统上使用gdb定位崩溃异常方法流程进阶定位代码行数及专项测试Demo》
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129858821
麒麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo相关推荐
- 麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127532255 红胖子(红模仿)的博文大全:开发技术集 ...
- 麒麟系统开发笔记(一):国产麒麟系统搭建开发环境之虚拟机安装
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/123045165 红胖子(红模仿)的博文大全:开发技术集 ...
- 麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127484901 红胖子(红模仿)的博文大全:开发技术集 ...
- 麒麟系统开发笔记(二):国产麒麟系统搭建Qt开发环境安装Qt5.12
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/123840699 红胖子(红模仿)的博文大全:开发技术集 ...
- 易课寄在线购课系统开发笔记(二十五)--完成课程详情页面展示相关功能(应用Redis缓存)
课程详情页面展示 创建一个课程详情页面展示的工程,是一个表现层工程. 工程搭建 ecourses-item-web.打包方式 war. 可以参考 易课寄在线购课系统开发笔记(七)–后台管理系统工程搭建 ...
- 易课寄在线购课系统开发笔记(十五)--完成购课系统门户的工程搭建
购课系统门户首页 工程搭建 可以参考 易课寄在线购课系统开发笔记(七)–后台管理系统工程搭建分析 ecourses-bms-web 工程的搭建过程. 功能分析 请求的 url:/index web.x ...
- 易课寄在线购课系统开发笔记(十六)--完成内容服务系统的工程搭建
首页动态展示分析 内容信息要从数据库中获得. 动态展示分析 内容需要进行分类. 分类下有子分类,需要动态管理. 分类下有内容列表. 单点的内容信息: 有图片 有链接 有标题 有价格 包含大文本类型,可 ...
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
本系列文章由zhmxy555编写,转载请注明出处. 文章链接 http://blog.csdn.net/zhmxy555/article/details/7447864 作者:毛星云 邮箱: ...
- 【Visual C 】游戏开发笔记十六 讲解一个完整的回合制游戏demo
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...
最新文章
- Xbox One 初始化-2 激活(百视通)和配置账户
- AI时代的摩尔定律?黄氏定律预测AI性能将逐年翻倍
- Week04-面向对象设计与继承
- Combinations leetcode java
- 转载 ---资深HR告诉你:我如何筛选简历与选择人员的
- 【数据结构与算法】数组动态分配方式的思考
- Swift中的函数curring简介
- H5实现俄罗斯方块(一)
- sql2005数据库备份—sql语句
- java获取反射机制的三种方式
- linux 忘记原来的myql的root的密码
- 扫描网络计算机mac地址,局域网MAC地址查询扫描器
- 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
- 计算机网络按传输介质分为哪几类,计算机网络按传输介质可分为哪三类?
- html圆形头像简易实现
- P3842 [TJOI2007]线段(线性dp,分类讨论)
- soui edit passwrod模式下禁用输入法
- url中如果有引号的处理
- 快速聊天:不用QQ概念版 也能将将QQ好友放到桌面 针对所有windows系统
- 某银行大数据体系架构设计与演进