ActiveX控件在发布模式下崩溃但不在调试模式下崩溃

时间:2011-05-05 23:10:15

标签: c++ c debugging activex release

我继承了用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  

有人有关于如何解决这个问题的建议吗?

2 个答案:

答案 0 :(得分:3)

在发布版本中生成调试符号。然后你可以调试崩溃。

或者,不要等待崩溃发生,而是在执行导致崩溃的步骤之前附加到进程。在VS例外对话框中,当抛出访问冲突时,VS立即停止(Debug | Exceptions | Win32 Exceptions | c0000005)。然后责备;此时,VS应该在AV发生时显示一个消息框。

如果每次在同一个地方发生崩溃重复,应该很容易诊断。

答案 1 :(得分:0)

因为我已经失去了很多时间来找到正确的解决方案,所以我在这里分享:

传递给 CreateControl 的许可证字符串必须已使用 SysAllocString 分配,否则您的许可ActiveX控件可能会崩溃。在我的项目中,这只是在发布模式下...不知道为什么它在调试模式下工作。

间接找到解决方案here