这次经历太诡异了,所以写下来。
我习惯用远程桌面在服务器上编程,用的visual studio C++,程序中涉及到多线程。某天在调试情况下,报“0x00007FFDD06926A1 (KernelBase.dll)处(位于 SNode.exe 中)引发的异常: 0x40010005: Control-C。”
报错时用调用堆栈观察,似乎发生在启动多线程时,但又找不出原因。又经过一段观察,发现程序自己运行没问题,但一旦移动窗口,就会报这个错误,于是怀疑操作系统出问题了,就启动了一个cmd窗口,移动它,发现cmd窗口没问题,但每移动一次,似乎就在命令行中敲了一个回车,这个莫名其妙的回车不知从哪里来的。因此才怀疑到是否本机的远程桌面出了问题,于是换了一台计算机远程桌面,果然再没有这个问题了。然后又思考,远程桌面为什么会有问题呢?在网上看到KernelBase.dll似乎和底层启动有关联,而我的本地计算机上(笔记本)有一个别扭的地方,就是鼠标(游戏鼠标)的头比较大,和边上一个USB设备(4G上网卡)互相挤着了,总有一些插不牢,于是拿了一个小头鼠标插上,再运行,问题解决了。
事后考虑,可能是鼠标或者是那个4G上网卡接触不太好,影响了远程桌面,在我移动远程服务器上的程序窗口时,远程桌面总是给服务器发某些多余的东西,引起的错误。
但到现在,我还是不能完全确定问题的所在,再观察一段时间吧。