我继承了用c ++ / c编写的activeX控件的维护,它在发布模式下崩溃,但在调试模式下没有崩溃。
当嵌入网页时,此AX控件会在发布模式下触发访问冲突,但不会在调试模式下触发
以下是IE 8的详细信息
Description:
Stopped working
Problem signature:
Problem Event Name: APPCRASH
Application Name: iexplore.exe
Application Version: 8.0.7601.17514
Application Timestamp: 4ce79912
Fault Module Name: mymodule.OCX
Fault Module Version: 13.0.0.771
Fault Module Timestamp: 4dc325f9
Exception Code: c0000005
Exception Offset: 003ebc80
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
有人有关于如何解决这个问题的建议吗?
答案 0 :(得分:3)
在发布版本中生成调试符号。然后你可以调试崩溃。
或者,不要等待崩溃发生,而是在执行导致崩溃的步骤之前附加到进程。在VS例外对话框中,当抛出访问冲突时,VS立即停止(Debug | Exceptions | Win32 Exceptions | c0000005)。然后责备;此时,VS应该在AV发生时显示一个消息框。
如果每次在同一个地方发生崩溃重复,应该很容易诊断。
答案 1 :(得分:0)
因为我已经失去了很多时间来找到正确的解决方案,所以我在这里分享:
传递给 CreateControl 的许可证字符串必须已使用 SysAllocString 分配,否则您的许可ActiveX控件可能会崩溃。在我的项目中,这只是在发布模式下...不知道为什么它在调试模式下工作。
间接找到解决方案here。