多线程调试问题
今天碰到一个相当奇怪的问题,在原组件基础上增加一部分功能之后,另一套组件中,一个原本稳定的功能出现了异常断点,但是异常模块是系统的kernal.
但是表面上看不出任何问题,只是在特定操作之后,特定的地方必定会崩溃。
突然有些迷茫。
这个时候,能够依赖的只有经验了。
面对概率性的经验,最先现去尝试的常常是简单的方式,然并卵。
在几乎可用的方法都失败之后,想到了必杀技:在可能出现问题的地方提前断点,开始单步(哈哈 其实很直接的方法,有时候运行时断点的地方就是问题的第一现场,单步几乎是不用来找第一现场的,而是用来调试具体事发原因的)。
意想不到的结果出现了,最终还是自己写的代码导致了问题发生:
在断点的地方并没有立即崩溃,而是继续走,一直到另一个组件创建,并调用接口之后才挂在了原断点的位置。
因为用的是vs2019,有些地方很让人奇怪,一个地方错误,会弹N个错误,也许,这也是类似的逻辑导致的问题吧。
接下来的事情就简单许多了。对症下药解决问题。