一次令人不悦的调试经历

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

现象让人略觉迷茫:

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

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

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/ice-arrow/p/12216750.html