我正在gdb用来调试C++程序.在线
assert(prevId == GetTagIdFromState(maxState));
Run Code Online (Sandbox Code Playgroud)
prevId值是0;GetTagIdFromState(maxState) returns 50;调试时,我收到以下错误.
Assertion `prevId == GetTagIdFromState(maxState)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff6ecbba5 in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
Run Code Online (Sandbox Code Playgroud)
您的应用程序按预期工作.断言失败(因为传递给它的值不相等,assert宏接收0),因此您的程序正在中止.这是断言的工作方式:
如果未定义NDEBUG,则断言检查其参数(必须具有标量类型)是否等于零.如果是,则断言输出标准错误输出的特定于实现的诊断信息,并调用std :: abort.
强调我的.
检查此断言参考以获取更多信息.
| 归档时间: |
|
| 查看次数: |
33017 次 |
| 最近记录: |