当前位置: 首页 > news >正文

工作烦恼与吐槽

       先说一下我自己吧,到目前为止已经工作5年了,目前在一家规模可以的公司中任职,我来这家公司之前是做qt桌面应用的,为了以后不被淘汰,我觉得应该深挖底层

所以到了这家公司维护qt底层库,我觉得这是一个不错的工作,因为我可以远离无聊的业务代码和业务需求,转而去学习一下底层库代码

       不过现在我遇到了问题,公司的应用是用qt开发的,但是出了崩溃、闪退问题,他们看看堆栈,发现是崩溃在Qt库里面就直接把bug转过来了,刚开始我还有精力看一下

但是推给我的问题越来越多,问题堆积的越来越多,导致我很难静下心去研究每个问题

        更难受的是,有的问题排查到最后其实就是业务代码的问题,我两三天找到问题的根源,和应用同步一下,人家半天就改完了,我也只算参与排查,不能算是修改

除了崩溃、闪退这种极端的问题,还有一些功能性的问题,应用实现的功能有问题,也会转到我这里,这都极大的浪费了我的精力

我自己最近复盘了一下,得出了以下结论

            1. 我的这个岗位可能就是干这个活的,我以前所在的公司都没有维护qt库的岗位,这家公司有这个岗位,那么默认应用只管使用qt,qt有问题就找我,我也应该解决(有点PUA自己了哈)2. 应用那边就是偷懒,不愿意尽力去排查,毕竟每个人都愿意省事3. 我现在也没有很好的方法去判断应用推给我的问题是不是qt底层库的问题(我大概率认为不是qt库的问题,qt不能这么烂)我没有明确的证据也不好推回去

分析完之后,我发现我自己也就能把第三点完善一下,公司和其他同事,我也不能去要求什么,所以我梳理了一个排查步骤

崩溃、闪退问题排查

1. 在确认是qt库导致的问题之前,不接受指派的bug

2. 让应用负责人提供崩溃堆栈信息,这里要注意有的人为了省事直接就用gdb看release版本的堆栈,这样的堆栈信息什么都没有,不会展现应用上的细节,这也是很多人一看堆栈,没看到应用的崩溃就给底层的原因,所以要和应用负责人确认是不是按照以下步骤获取的崩溃堆栈信息

            采集堆栈信息的步骤:(1) 安装应用对应的debug包和qt对应版本的debug包(2) 再次复现一次问题(3) 使用gdb查看新生成的堆栈信息

一些非主产品线上会找不到应用对应的debug包,这时候需要在复现问题的电脑上搭建开发环境去编译debug版本

我目前处理的两个崩溃问题,最后都是在安装debug包后,从崩溃堆栈上看到崩溃位置是在应用业务代码上,这是目前是最容易划分崩溃责任的方式了

3. 应用负责人按照正确的步骤提供堆栈信息,如果堆栈信息中有明确的qt代码崩溃位置,则接收bug,反之,qt框架可以协助排查,视情况决定是否接受指派bug

4. 在排查问题时,要拉测试和应用负责人进群沟通,避免做传话筒

5. 在要完全投入去排查问题前,要确认如下信息

        (1) 通过堆栈信息已经无法看出崩溃的具体位置(2) 确认测试负责人 确认应用负责人(3) a.确认电脑硬件 b.确认操作系统版本(build id) c.确认应用版本 d.确认qt版本(4) 确认问题的现象,测试提供问题现象视频(5) 确认问题是否必现,确认问题复现的手法,测试应提供高复现率的操作手法

6. 问题排查阻塞,无法继续进行的,要及时向上汇报



 

功能性问题排查

1. 在确认是qt功能问题之前,不接受指派的bug

2. 应用负责人应提供一份能复现功能问题的最小demo,这样就不用梳理应用的业务逻辑

3. 应用版本不变,更换qt版本比较

        例如,目前的版本是qt0.3版本有问题,那么可以将qt更换到qt0.2版本再测试,如果还有功能问题大概率就是qt的问题了

总结

        虽然我自己梳理了一些排查步骤,不过还是很难落地。本质上还是没有一个能快速划分问题责任的方式,有些问题看起来是qt问题而且也不好推给应用,我也不想去为了一个问题归属扯皮(可能再干烦了就会去扯皮了)

        不知道我以上的思考是否正确,请看到这篇文章的大佬提供点建议,谢谢


http://www.mrgr.cn/news/30714.html

相关文章:

  • SSE (Server-Sent Events) 服务器实时推送详解
  • D3入门:概念、主要特点、基本功能、常见应用场景
  • FPGA实现PCIE3.0视频采集转SDI输出,基于XDMA+GS2971架构,提供工程源码和技术支持
  • 【6.2】位运算-解重复的DNA序列
  • 【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南
  • 17RAL_Visual-Inertial Monocular SLAM with Map Reuse
  • 吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
  • Ubuntu初期配置常见问题汇总
  • 华为OD机试 - 构成指定长度字符串的个数(Python/JS/C/C++ 2024 E卷 100分)
  • WEB攻防-JS项目Node.js框架安全识别审计验证绕过
  • 修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
  • EmguCV学习笔记 VB.Net 12.3 OCR
  • C++--C++11
  • 单细胞BisqueRNA和BayesPrism去卷积分析工具简单比较
  • ffmpeg面向对象——参数配置秘密探索及其设计模式
  • 【编程底层原理】mysql的redo log undo log bin log日志的作用,以及何时生成,涉及到哪些参数变量
  • 详解JESD204B子类一的确定性延时(JESD20B三)
  • 无会员的办公技巧——office
  • 必知的PDF转换软件:看2024大学生如何选择
  • 全球视角下的IT产业新挑战与机遇
  • 深入理解Lucene:开源全文搜索引擎
  • Study Plan For Algorithms - Part34
  • 24年蓝桥杯及攻防世界赛题-MISC-2
  • 如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
  • 【Python百日进阶-Web开发-FastAPI】Day803 - FastAPI的路径参数
  • 关于单片机的技术原理及应用