繁体   English   中英

我的C ++应用程序仅在发布模式和Windows 7中崩溃

[英]My C++ App Crashes Only in Release Mode and Windows 7

我对Windows 7上的发布模式中的应用程序崩溃感到非常沮丧。

在main函数中,我删除了所有内容:

int main(int argc, char **argv, char **envp) {
    return (0);
}

但是我确实有许多在主要功能之外定义的指令,变量和函数。

它只在Windows 7的发布模式下崩溃。在Windows 7上的调试模式是可以的; Windows XP上的调试和发布模式都可以。

既然我不能调试,我不该做什么。

错误是:

Unhandled exception at 0x00dc21ca in MyApp.exe: 0xC0000005: Access violation reading location 0x8496a9bb.

流水线:

00DC21CA  mov         eax,dword ptr [edx+0Ch] 

这太疯狂了,请帮忙。

彼得

PS:如果我删除了我在主要部分之外定义的所有内容,那么它没关系。

PS:

char* AllocArgsMemory()
{
    return (char*)malloc(2); // works: return NULL
                             // So it seems the malloc has some problems
}

检查您正在使用的所有指针。 它们的应用程序崩溃方式表明您正在取消引用空指针或在预先分配的内存范围之外(例如数组)。 这可能是由于未经初始化的指针或订阅索引太大。

它在调试模式下不会崩溃,因为在调试模式下,调试器通常会在未初始化的内存中使用预定义的值,例如0xcccccccc,这在发布模式下不会发生。

即使它是一个发布二进制文件,你也应该创建一个完整的符号文件(.pdb),这样你就可以在出现问题时拥有​​一个不错的callstack。 为了得到它:启动任何调试器(WinDbg,Visual Studio等),设置它以停止访问冲突异常,开始使用它进行处理,它应该在异常发生时中断并给你一个callstack。 请记住,调试器可以运行任何可以执行的操作; 即使您没有源代码和局部变量值的链接,您也可能有其他有用的信息。

希望能帮助到你。

听起来它可能是一些内置的设置/属性。 我没有太多东西可以提供给你(部分是因为缺乏信息),但如果它在Windows 7中以DEBUG模式工作,就像在RELEASE中设置所有构建设置/属性一样与DEBUG相同。 如果它有效,您知道它是构建设置的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM