我正在使用gdb调试C++程序。在行中

assert(prevId ==  GetTagIdFromState(maxState));
  • 参数prevId的值为0
  • 方法GetTagIdFromState(maxState) return s 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
    

    最佳答案

    您的应用程序按预期工作。断言失败(由于您传递给它的值不相等,因此assert宏收到0),因此程序被中止。断言就是这样工作的:



    强调我的。

    检查this assert reference以获取更多信息。

    关于c++ - 调试c++ : . ./nptl/sysdeps/unix/sysv/linux/raise.c:没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13152775/

    10-11 19:00