断言在C++问题中失败
Assertion Failed in C++ questions
我正在处理的一些代码遇到问题。此代码在基于linux的系统上运行,我收到的错误如下:/root/cvswork/pci_sync_card/Code/SSBSupport/src/CRCWbHfChannel/CCRWbHfMSBSimulator.cpp:447:虚拟void CCRCWbHfMSBSimulator::Process():断言"pcBasebandOutput"失败。
我试着通过这个代码来弄清楚为什么会失败,但我似乎无法弄清楚。不幸的是,我有太多的文件无法在这里真正共享代码(完成pcBasebandOutput分配需要相当长的时间)。我知道这是一个比实际问题更复杂的问题。我的主要问题是:
- 是我的断言(pcBasebandOutput);是否需要代码行?我之所以这么问,是因为当在Visual Studio上运行这些代码时,我的程序的结果是令人满意的
- 当它评估我的pcBasebandOutput变量时,为什么它会将其评估为false?这是否意味着没有任何值实际分配给pcBasebandOutput?或者可以给它赋值,但它的类型不对(指针指向两个变量的结构,这两个变量都是双精度的)
谢谢!
assert
检查逻辑条件。如果条件为false
,则断言失败。所以写assert(cond)
在逻辑上与写相同
if (!cond)
{
assert(false);
}
我不建议您从代码中删除assert
,因为它是一个保护程序,告诉您某些事情没有按预期进行。忽略这一点并不是上帝的主意,因为它可能会在
只有你才能知道
pcBasebandOutput的类型是什么?也许它没有正确初始化?
assert的主要目的是允许IDE在assert命中的地方进入调试会话。从那里您可以读取所有变量并查看调用堆栈/线程。另一个解决方案(除了使用调试器)是添加大量的日志记录,这在线程环境中可能会单独导致问题(日志记录非常慢)。
相关文章:
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 我应该如何在C++中使用结构体解决输入失败的问题?
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- 查找在 4 和问题中代码失败的测试用例
- exteranl原生构建问题,构建命令失败,android工作室
- build命令失败,外部原生问题android工作室
- C ++回测问题:如何检查构造函数在假定失败时是否失败(给定输入的无效参数)
- 断言失败错误,C++中的矢量下标超出范围问题
- 如何解决来自 arduino 的 post 请求的问题,在失败之前只收到 2-3 次
- TFS构建由于链接问题而失败
- 班级路径问题 - getJnienv失败了
- 由于libkern.h中的语义问题,Xcode Build失败
- C++ 运行失败:退出值 2 - 我的代码出了什么问题?
- 我遇到此问题,运行程序时出现一个弹出窗口,指出调试断言失败
- 断言在C++问题中失败
- 生成文件问题,获取"目标'rgbapixel.o'的配方失败"
- 使用快速英特尔随机生成器(SSE2)会因堆栈问题而失败..已损坏
- C++将节点添加到链表的开头一次后失败.其他方法也有问题
- 失败错误处理问题
- Xcode 链接器命令失败问题