遇到一些我正在处理的代码问题。此代码在基于Linux的系统上运行,我收到的错误如下: /root/cvswork/pci_sync_card/Code/SSBSupport/src/CRCWbHfChannel/CRCWbHfMSBSimulator.cpp:447: virtual void CCRCWbHfMSBSimulator :: Process():断言'pcBasebandOutput'失败。
我已经尝试单步执行此代码来弄清楚为什么会失败,我似乎无法弄明白。不幸的是我有太多的文件可以在这里真正共享代码(单步执行pcBasebandOutput分配需要相当长的时间)。我知道这是一个比实际问题更复杂的问题。我的主要问题是:
谢谢!
答案 0 :(得分:1)
assert
检查逻辑条件。如果条件为false
,则断言失败。因此,写assert(cond)
在逻辑上与写作相同:
if (!cond)
{
assert(false);
}
我不建议您从代码中删除assert
,因为它是一名警卫,告诉您某些事情不符合预期的方式。并且忽略这一点并不是一个上帝的想法,因为它可能会在一条腿后面射击你
答案 1 :(得分:1)
只有你知道
pcBasebandOutput的类型是什么?也许它没有正确初始化?
断言的主要目的是允许IDE在assert命中的地方进入debuging会话。从那里你可以读取所有变量并查看callstack / threads。其他解决方案(比使用调试器)是添加大量日志记录,这在线程环境中可能会导致问题(日志记录非常慢)。