关于调试时程序报 0xC00000008: Invalid Handle 错误的原因。
前几天在调试一个产品时,进入到某一个函数调试,在函数返回时, IDE开始报 "叉叉叉...0xC00000008: Invalid Handle " 的调试错误,此时按F10, 不能继续往下执行,只能转到汇编模式调试……这不明白着流氓吗!?我怎么能看得懂汇编……
来劲了,非要弄明白到底是什么原因导致了报这个叉叉叉错误。
捣鼓了好久好久,折腾了很长很长,但没有找到错误的原因……看来非的请我的偶像赵阳了,结果他来调了好久也是没找到根本原因,最后留下几句鸟语铩羽而归。我挺高兴,偶像竟然没搞定。
又请来了我的部门经理ZhangSY同志,他在我心目中的地位那绝对是“手中无剑,心中无剑”的N系列。
过然,他坐下来,还是那么的思路清晰,身手敏捷,而且凸显了超好的记忆力,N年前的代码,他都能记得请当时为什么要屏蔽,为什么要修改……经过一番望闻问切,把原因锁定在了xMutex这个类上,类的析构函数上!
其实这里最终的结果已经不远了,但还不是真正的原因所在。
我跟你铆上了!
世上从来就没有救世主,也没有神仙&皇帝……
看,瞅,吧嗒吧嗒整了整整一下午+ 一个晚上,额滴神啊,找到原因了:邱YL说的也很对。
class xMutex a;
struct var
{ int a;
xMutex mtx;
};
var list; //此为全局变量
void fun1()
{
var temp;