缘起
最近,我们程序的某个功能在一台机器上不正常,但是在另外一台机器上却是正常的。代码是同一份,vs版本也一样(打的补丁也一样)。编译出来的程序在两台电脑上运行的结果就是不一样。惊不惊喜,意不意外?如果是你遇到了这种情况,你会怎么调查呢?:upside_down_face:
{% note info %}
说明:
为了跟大家分享这个问题,我事后在自己的机器上重新把整个过程梳理了一遍,并保存了process monitor抓取的事件文件,方便感兴趣的读者亲手做实验。
为了行文方便,下文把程序功能正常的电脑称作A,把程序功能不正常的电脑称作B。
{% endnote %}
排查问题
通过对比程序在两台电脑上的运行过程的不同点可以比较有效的解决这种问题。
下面是我的思路:
- 首先,排除代码不一致的问题。把
A上的代码拷贝到B上,编译,运行,功能不正常。 - 把
A上的整个Debug目录(程序所在的目录)拷贝到B上,运行,依然不正常。 - 对比两台电脑上的环境变量,排除两台电脑的环境变量不一致导致的问题(尤其是
PATH,会影响dll加载顺序)。
使用Sysinternals排错:事件分析修复程序异常

本文介绍了在程序功能在不同机器上表现不一致的情况下,如何通过Sysinternals工具进行事件捕获和对比分析,最终定位到注册表事件的差异,成功解决问题。强调了清晰思路和合适工具在排错中的重要性。
最低0.47元/天 解锁文章

1555

被折叠的 条评论
为什么被折叠?



