我有一些在服务器上以发布模式运行的 64 位代码。服务器上没有Visual Studio,只有我的开发机器上。该程序现在已经由许多作者编写(我是最新的(,其中的一些代码我仍然不熟悉,而且它很大。
程序时不时地崩溃,并带有空指针。0xwhat(最新0x40066c19(的指令引用了0x00000000的内存 - 单击"确定"终止程序。我有EXE的所有源文件和PDB文件,但是当我运行它并附加进程时,内存0x40066c19完全超出了范围。只有??在那个地区。您如何使用有关"指令在..."的信息?
反汇编窗口显示类似(示例(的内容 - 但如您所见,从 00000001403CB888 到0x40066c19
if (LastKickIdle > GetTickCount())
00000001403CB882 call qword ptr [__imp_GetTickCount (0140688310h)]
00000001403CB888 cmp dword ptr [LastKickIdle (0140888DF8h)],eax
00000001403CB88E ja CMainDlg::OnKickIdle+281h (01403CBAB1h)
return 1;
LastKickIdle = GetTickCount() + 500;
00000001403CB894 mov qword ptr [__formal],rbx
00000001403CB89C call qword ptr [__imp_GetTickCount (0140688310h)]
00000001403CB8A2 add eax,1F4h
00000001403CB8A7 mov dword ptr [LastKickIdle (0140888DF8h)],eax
我在工作中遇到了类似的情况。 我创建了一个log
类,该类采用字符串 arg 并将其写入包含其他一些有用信息的文件中。 我在方法的开头或我认为某些事情可能或以后可能有问题的地方进行输入。 有了这个,我至少能够缩小对问题的搜索范围。
希望这有帮助。