一次令人不悦的调试经历

上周五到昨天,前后花了七八个小时在找一个app打开后即挂掉(最小化到任务栏,点不出来)的原因。

现象让人略觉迷茫:

初始化完了就挂,但挂不到代码中,单步跟踪十分困难

自动断点,定位在atlthunk.dll中,该dll无任何相关信息,网上也几乎没有相关内容,说明极少有与之相关的问题出现。

鉴于现象如此,怀疑是多线程问题导致,于是注意力转移到了定时器上,因为另一个下载线程十分简单,也没有改变相关代码,出问题概率非常低。

然而,跟踪、禁掉定时器之后仍然没有进展,看不到问题原因,也看不到问题位置。

这样只好从开始初始化之后就开始跟踪,一步一步,观察代码,意外发现一个union中的变量都进行了初始化,报了异常

改为只初始化一个结果没有仍何改善。

继续跟进,意外又来了,一个智能指针被两次赋值,但都是同样的值,讲道理赋同样的值不会改变什么东西,为什么会挂了呢,但禁掉重复赋值之后,问题果然解决了,想过来,这个指针是智能指针,也许是赋值过程中,指针被析构了。

 

然而造成两次赋值的原因,却是同事签入代码之后出现的,也许还有很大的砍在等着我去经历,因为看着目前的状态,情绪成熟,我还是远算不上的

一个聪明的人,应该在问题出现时快速定位,并制定出解决方案,并迅速执行下去。

抛却情绪带来的影响,全凭信仰的指导思想和理智去做事。

posted @ 2020-01-20 09:52  IceArrow  阅读(203)  评论(0编辑  收藏  举报