我有一个在Win32和x64版本(使用Windows XP x64)中运行的大型C ++应用程序。在调试x64版本时,在每个代码更改第一个调试会话后,我开始用
停止myapp.exe中0x77ee5f3c处的未处理异常: 0xC0000005:访问冲突写入位置0x0000000000030c90。
callstack在ntdll中显示无限递归调用:
ntdll.dll!0000000077ee5f46()
ntdll.dll!0000000077ef31ed()
ntdll.dll!0000000077efbc0b()
ntdll.dll!0000000077f2539e()
ntdll.dll!0000000077ee5f46()
ntdll.dll!0000000077ef31ed()
etc.
在此之后我选择“停止调试”然后“开始调试”通常一切都很好,直到我编译一些代码和链接或者重新启动Visual Studio时才会再次出现问题。
答案 0 :(得分:1)
您列出的地址是32位地址。这表明VS正在尝试在32位进程上使用其64位调试器。
您的解决方案中可能混合使用了'Win32','x64'和'Any CPU'构建平台。确保始终定义“活动构建平台”。 .net的东西声称表面上有“任何cpu”,它下面有一些32位操作的亲和力。
关闭“编辑并继续”调试似乎也有助于此类事情。