在 gdb 中中断失败断言的正确方法是什么?

新手上路,请多包涵

我试图在我的程序中捕获失败的断言。我正在使用一个直接调用 assert() 的库,而不是自定义函数或宏,并且它在这个库中我目前正在尝试跟踪几个与移植相关的错误。所涉及的所有内容都已使用 g++ 中的调试符号编译。

我发现的最佳解决方案是在断言的文件:行处中断,并使用断言表达式的条件。这允许在断言失败之前停止断言,但这是一个可怕的解决方案。它需要对每个可能失败的断言进行特殊设置,在我的 IDE 中不起作用,而且通常需要付出太多努力。

如何以允许检查断言调用范围内的调用堆栈和变量的方式使用 gdb 和 gcc 打破 任何 失败的断言?

如果解决方案允许我放弃断言的失败并继续运行,那就更好了。

原文由 user3995702 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 631
1 个回答

abort() 上设置断点似乎是最好的答案。

break abort 在 gdb 的 CLI 中。

原文由 Peter M 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题