在我的代码开始之前,通过上下文菜单打开数据文件会崩溃app

时间:2017-07-12 16:37:24

标签: c++ windows mfc

我甚至不知道如何调试这个。这个应用程序,在Visual Studio中使用MFC开发,已经运行了很多年但是我得到一个客户报告,当在Windows中打开数据文件时,通过右键单击资源管理器中的文件并选择“打开方式”,它崩溃了。 ..“。客户还报告说,每当他尝试从Outlook中打开文件时都会发生崩溃。

我检查过,果然,确实会发生这种情况。我一直遇到崩溃消息“MyApp.exe [ nnnn ]中发生了未处理的Win32异常。” nnnn 是一个4位数字,并不总是相同。它的最新值是2322.然后我选择使用Visual Studio 2010进行调试,然后我收到一条警告“MyApp.exe中0x00c72cf3处的未处理异常:0xC0000005:访问冲突读取位置0x00000000”。调试器将中断位置显示在_heap_alloc(size)内,该_malloc_base(size)是从size调用的,其合理值为msvcr100.dll!malloc(size)(通常为6500000左右)。

调试器向我显示代码在_malloc_base()中,但没有提供有关调用堆栈的更多有用信息。我已经尝试设置下一个执行位置,以为我可能会走出去看看它的位置,但我首先得到的消息是我将有错误的堆栈帧并且处于不同的功能中。按下并尝试退出__DllMainCRTStartup()我很快就遇到调试器告诉我源不可用的情况。

我已经用日志消息编写了我的代码,但没有遇到任何问题。就像我所知道的那样,崩溃发生在MyApp::InitInstance()之内的某个地方,在执行之前甚至到达我的代码开始的sfc/scannow

到目前为止我所做的挖掘建议我应该使用管理员权限在命令propmt上运行GET /=MainController->render 来扫描系统中的损坏。我做到了,并找回了“没问题”的报告。

我在Windows 7旗舰版(32位)上完成了大部分测试,但问题在Windows 10上也是一致的。

当通过“文件”菜单或拖放打开文件时,该应用程序可以正常工作。

鉴于崩溃似乎发生在Microsoft提供的应用程序启动代码中,我目前不知道如何进一步调试或解决问题。

将数据文件拖到应用图标上时,一切正常。我原以为这会触发相同的事件序列,右键单击数据并通过“打开方式...”选择应用程序,但事实并非如此。

我想在调试器中启动应用程序并为其提供与通过上下文菜单启动时相同的初始数据,但我不知道该怎么做。

欢迎任何建议。

0 个答案:

没有答案