这是一种防止 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 不会 "catch" 分段错误 - 它是 OS 中断您的程序,而不是程序中断自身。
要禁用捕获失败,您可以执行以下操作(来自documentation)
- 禁用捕获异常
将环境变量 GTEST_CATCH_EXCEPTIONS
设置为零或 运行 使用 --gtest_catch_exceptions=0
标志 进行测试
- 让 GTest 在失败时设置断点(在调试器下 运行ning 时)
将环境变量
GTEST_BREAK_ON_FAILURE
设置为非零值或 运行 使用 --gtest_break_on_failure
标志 的测试
第二个选项会在任何失败时直接让您进入调试器交互模式,而不仅仅是逃避异常。
看起来像 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 不会 "catch" 分段错误 - 它是 OS 中断您的程序,而不是程序中断自身。
要禁用捕获失败,您可以执行以下操作(来自documentation)
- 禁用捕获异常
将环境变量GTEST_CATCH_EXCEPTIONS
设置为零或 运行 使用--gtest_catch_exceptions=0
标志 进行测试
- 让 GTest 在失败时设置断点(在调试器下 运行ning 时)
将环境变量
GTEST_BREAK_ON_FAILURE
设置为非零值或 运行 使用--gtest_break_on_failure
标志 的测试
第二个选项会在任何失败时直接让您进入调试器交互模式,而不仅仅是逃避异常。