Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的C++;应用程序仅在发布模式和Windows 7下崩溃_C++_Debugging_Windows 7_Crash_Release - Fatal编程技术网

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

C++ 我的C++;应用程序仅在发布模式和Windows 7下崩溃,c++,debugging,windows-7,crash,release,C++,Debugging,Windows 7,Crash,Release,我对我的应用程序在Windows7的发布模式下崩溃感到非常沮丧 在main函数中,我删除了所有内容: int main(int argc, char **argv, char **envp) { return (0); } 但我有很多指令、变量和函数是在主函数之外定义的 它只在Windows7的发布模式下崩溃。 Windows7上的调试模式正常; Windows XP上的调试和发布模式都可以 由于我无法调试,我不知道该做什么 错误是: Unhandled exception at 0x

我对我的应用程序在Windows7的发布模式下崩溃感到非常沮丧

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

int main(int argc, char **argv, char **envp) {
    return (0);
}
但我有很多指令、变量和函数是在主函数之外定义的

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

由于我无法调试,我不知道该做什么

错误是:

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

00DC21CA  mov         eax,dword ptr [edx+0Ch] 
这太疯狂了,请帮帮我

彼得

附言:如果我删除了我在主界面之外定义的所有内容,那就没关系了

附言:

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

听起来可能是一些内置设置/属性。我没有太多的东西可以提供给你(部分原因是缺乏信息),但是如果它在Windows7的调试模式下工作,就像在发布版中设置所有的构建设置/属性一样。如果工作正常,您就知道生成设置有问题,请检查您正在使用的所有指针。应用程序崩溃的方式表明,您正在取消引用空指针或超出预先分配的内存范围(如数组)。这可能是由于指针未斜体或订阅索引太大所致


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

即使它是一个发行版二进制文件,也应该创建一个完整的符号文件(.pdb),以便在出现问题时有一个合适的调用堆栈。 要获得它:启动任何调试器(WinDbg、visualstudio等),将其设置为在访问冲突异常时停止,用它启动您的进程,当异常发生时它应该会中断,并给您一个调用堆栈。 记住调试器可以运行任何可以执行的东西;即使您没有到源代码和局部变量值的链接,也可能有其他有用的信息


希望有帮助。

也许你应该一次移除一件东西,直到它起作用,这样你就知道该责备什么了。或者发布代码。哇。现在有一个好的。除了标准库之外,还有其他库吗?您可能需要检查是否有东西(不知何故)连接到在main之前运行的_main函数。此外,请检查您的构造函数。全局对象的构造函数是否导致崩溃(发生在main之前)?将其放在.NET framework上;)如果全局(命名空间级别)对象依赖于其他对象的初始化,则可能会发生这种情况。不同的编译器可以以不同的顺序初始化对象,这就是为什么在不同的平台上会看到不同的行为。您必须找出导致崩溃的对象。更可能的是,调试版本上的设置隐藏了问题而没有修复它——版本设置实际上不是问题所在。