这是一种防止 gtest (C++) 捕获异常和分段错误的方法吗?

Is it a way to prevent gtest (C++) from catching exceptions and segmentation faults?

看起来像 Google C++ 测试 (gtest) 框架以某种方式捕获所有失败的断言、异常和分段错误。测试被标记为失败,但测试套件本身会恢复并运行随后的测试。

这看起来很酷,只是 gtest 框架打印到控制台的诊断输出非常有限。 CLion IDE 将提供更多信息,包括完整的堆栈跟踪和变量。这是关闭 gtest "crash recovery" 机制的简单方法吗?

您可以使用选项 --gtest_catch_exceptions=0 运行 您的测试二进制文件。这将导致测试在异常时崩溃

Do not report exceptions as test failures. Instead, allow them to crash the program or throw a pop-up (on Windows).

或者,您可以将此环境变量 GTEST_CATCH_EXCEPTIONS 设置为 0;

gtest docs

中提到了这些功能

我很确定 GTest 不会 "catch" 分段错误 - 它是 OS 中断您的程序,而不是程序中断自身。

要禁用捕获失败,您可以执行以下操作(来自documentation

  • 禁用捕获异常
    将环境变量 GTEST_CATCH_EXCEPTIONS 设置为零或 运行 使用 --gtest_catch_exceptions=0 标志
  • 进行测试
  • 让 GTest 在失败时设置断点(在调试器下 运行ning 时) 将环境变量 GTEST_BREAK_ON_FAILURE 设置为非零值或 运行 使用 --gtest_break_on_failure 标志
  • 的测试

第二个选项会在任何失败时直接让您进入调试器交互模式,而不仅仅是逃避异常。