【问题标题】:ActiveX control that crashes in release mode but not in debug mode在发布模式下崩溃但在调试模式下不崩溃的 ActiveX 控件
【发布时间】:2011-05-05 23:10:14
【问题描述】:

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

有人对如何解决这个问题有建议吗?

【问题讨论】:

  • 提高编译器的警告级别...并注意警告

标签: c++ c debugging activex release


【解决方案1】:

在您的发布版本中生成调试符号。然后就可以调试崩溃了。

或者,不要等待崩溃发生,而是在执行导致崩溃发生的步骤之前附加到进程。在 VS 异常对话框中,让 VS 在引发访问冲突时立即停止(调试 | 异常 | Win32 异常 | c0000005)。然后复制;此时,VS 应该会在 AV 发生时显示一个消息框。

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

【讨论】:

    【解决方案2】:

    因为我浪费了很多时间来寻找正确的解决方案,所以在这里分享一下:

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

    间接找到解决方案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多