SEH例外,代码0xc0000005在测试主体中投入
SEH exception with code 0xc0000005 thrown in the test body
我正在使用googletest为以下类编写测试,我会遇到上述错误。
class Base
{
// Other Functions;
CSig objSig[50];
}
csig类如下:
class CSig
{
//... constructor, destructor(empty) and some functions
CMod *objMod;
CDemod *objDemod;
}
CSig :: CSig
{
bIsInitialised = false;
for (int i=0; i<MAX_NUM; i++)
{
PStrokePrev[i] = 0.0;
}
}
但是,当我丢弃CSig objSig[50]
时,测试正常。
我该怎么办来解决这个问题?另外,我需要在基类中拥有CSig objSig[50]
。
seh(结构化异常处理)异常不是C - 可以使用C - 语言构造(try-catch)处理的C 异常基本缺陷。SEH的外观非常烦人,因为它们不会引起正常的堆栈放松,这可能会导致未锁定的文件或未锁定的静音,而这些静音通常应该由拥有对象的破坏者清除。当访问不属于当前过程的内存时,我遇到了SEH检验,因此我建议查看CSIG的构造函数和破坏者中的内存相关指令。例如,您可以阅读有关SEH的信息,例如,这里
我刚刚发现的问题是,在Visual Studio中,我去了Debug-> exceptions,并检查了第一列中的所有内容。然后运行/调试您的单元测试,并且会在问题所在的线上抛出一个例外。那是您需要调试/修复它的地方。
我使用Visual Studio 2010的Googletest遇到了这个问题。我们的设置涉及为Googletest Frameworks创建库,然后将其与我们的单个单元测试链接。我最近更新了框架支持并从头开始重新编译。执行此操作后,我遇到了上述例外。
经过一番挖掘,我发现"结构成员对齐"设置为罪魁祸首:
项目属性>配置属性> C/C >代码生成>结构成员对齐
当Frameworks项目设置为"默认值"时,相应的单元测试项目将其配置为" 1字节/ZP1"。一旦我更改了它们以进行相同的对齐,问题就消失了。
对我而言,它似乎是一个零参考错误。某种方法被调用了NULLPTR,出于我不清楚的原因,它并没有立即失败,而是开始执行。SEH错误大概是在访问未分配的内存后立即发生的。因此,请检查无效指针!
我遇到了类似的问题,它与非命令变量有关,并在发行版中运行测试。我有一个非定位化的char *之后,将其初始化为null似乎已经解决了问题。
如果您使用的是Visual Studio 2013,请在调试中查看Win32异常(特别是访问违规)的抛弃框。这将让您调试哪个行有问题。这可能很有用,因为如果您的程序通常提出其他例外,调试器将不会破坏。
破坏零指针可能是原因。我通过Visual Studio&GT;异常全选。然后运行本地Windows调试器,它停在发生例外的线上。
使用QT中的MSVC陷入了此问题。SEH几乎是随机抛出的,没有明显的原因原因。(读:没有时间来研究它)在找不到正确的解决方案并且测试似乎适用于非窗口用户之后,我切换到MINGW正常进行测试。
我试图删除已删除的内存地址。在我的情况下,这是问题,所以我建议寻找无效指针。
我在VS上使用gtest与Protobuf一起使用,我看到了检查测试的检查(调试)构建崩溃的问题,但没有免费(Release)构建。p>要使用Protobuf,我在此处遵循说明,尤其是Windows的VCPKG安装。
事实证明,GTEST项目是从父母那里继承了LIBS,最终与Libprotobuf和libprotobuf_lite链接在一起,而不是Libprotobufd和libprotobuf_lited,后者是DEBUG版本。这是因为默认情况下,在属性下的其他依赖关系中的路径 - libs居住。
将路径更改为$(_ zvcpkgcurrentinstalleddir)$(_ zvcpkggconfigsubdir)debug lib*.lib解决了问题,例外消失了。
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 换位表导致测试失败(但在游戏中运行良好)
- 用于交叉编译和CMake的预处理器宏的单元测试
- 谷歌测试中的期望值存储在哪里
- 如何在for循环中包含两个索引值的测试条件
- SEH例外,代码0xc0000005在测试主体中投入
- 编译器错误,用静态多主体主义模拟C++单元测试
- 如何嵌入实时单元测试函数的主体作为 Doxygen 的示例用法