[英]Assertion Failed in C++ questions
遇到一些我正在研究的代碼問題。 此代碼在基於Linux的系統上運行,我收到的錯誤如下:/root/cvswork/pci_sync_card/Code/SSBSupport/src/CRCWbHfChannel/CRCWbHfMSBSimulator.cpp:447:virtual void CCRCWbHfMSBSimulator :: Process():斷言'pcBasebandOutput'失敗。
我試過踩過這段代碼來弄清楚為什么會失敗,我似乎無法弄明白。 不幸的是我有太多的文件可以在這里真正共享代碼(單步執行pcBasebandOutput分配需要相當長的時間)。 我知道這是一個比實際問題更復雜的問題。 我的主要問題是:
謝謝!
assert
檢查邏輯條件。 如果條件為false
則斷言失敗。 因此編寫assert(cond)
在邏輯上與寫入相同:
if (!cond)
{
assert(false);
}
我不建議你從代碼中刪除assert
,因為它是一個警衛告訴你某些東西不符合它的意圖。 並且忽略這一點並不是一個上帝的想法,因為它可能會在以后拍攝你的腿
只有你能知道
pcBasebandOutput的類型是什么? 也許它沒有正確初始化?
斷言的主要目的是允許IDE在assert命中的地方進入debuging會話。 從那里你可以讀取所有變量並查看callstack / threads。 其他解決方案(比使用調試器)是添加大量日志記錄,這在線程環境中可能會導致問題(日志記錄非常慢)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.