精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
近期用C#开发一个录音软件,.NET用的4.8版本,VS2019开发,在Win10机器安装没有问题,但是在Win7 32位某些机器里不行。出的问题是:Appcrash,打开详细信息说是ntdll.dll的问题。
因为大部分机器正常,只有小部分机器异常,所以就要定位问题,想办法解决问题,客户不会因为你大部分机器可以不追查,因为客户资源也是有限的。
定位常用日志定位和功能定位。
因为是打开软件时出问题,所以就对初始化部分进行思考,窗体Form的构造函数没代码,哪就看Load事件了,里面加了几个MessageBox显示执行位置,有时候出问题有时候不出问题,出问题时提示一样ntdll.dll appcrash。
初始化加载时不能排除问题,就想有哪些代码是在后台一直被调用,看到有
protected override void WndProc(ref Message m)
这个覆盖方法相当于窗口函数,覆盖它可以对特定的消息进行处理,本软件里用它实现了快捷键功能。这个窗口函数肯定是后台一直运行,所以注释后再编译发布到问题机器上,问题解决。
目标Win7机器上system进程占用cpu较高,可能影响protected override void WndProc(ref Message m)的调用,导致问题。