如何查找崩溃代码



我有一些在服务器上以发布模式运行的 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 并将其写入包含其他一些有用信息的文件中。 我在方法的开头或我认为某些事情可能或以后可能有问题的地方进行输入。 有了这个,我至少能够缩小对问题的搜索范围。
希望这有帮助。

最新更新