【问题标题】:How to get backtrace information from exception in googletest?如何从 googletest 中的异常中获取回溯信息?
【发布时间】:2014-12-22 05:57:24
【问题描述】:

我正在尝试做一些半测试驱动的设计,偶尔当我实现一个新功能时,它会在某个地方出现异常。所有 gtest 都告诉我异常是什么,并且没有给我任何回溯信息。

如果我运行 gdb --args --gtest_catch_exceptions=0,它将在测试中停止,但没有任何回溯信息。它简单地说:

[ RUN      ] TESTNAME.test_case
EXCEPTION: exception description[Inferior 1 (process 30528) exited with code 0377]
(gdb) bt
No stack.

【问题讨论】:

  • 你用调试符号编译了吗?您是否尝试过禁用内联以查看它是否会清除堆栈跟踪?

标签: c++ debugging exception gdb googletest


【解决方案1】:

在抛出异常之前使用catch throw gdb 命令设置特殊断点。当它被击中时,您可以像往常一样通过命令bt 看到回溯。见https://sourceware.org/gdb/onlinedocs/gdb/Set-Catchpoints.html

【讨论】:

    【解决方案2】:

    以更自动的方式,您可以add your own listener,然后通过使用How to make backtrace()/backtrace_symbols() print the function names? 额外打印回溯来组合失败测试用例的输出

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2021-09-26
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多