如何从通过 ctest 运行的单元测试生成核心转储文件?

发布于 2025-01-11 09:34:15 字数 191 浏览 0 评论 0原文

我遇到了单元测试因段错误而随机失败的问题,并且我无法弄清楚如何从这些测试中生成核心转储。

我使用 cmake 和 ctest 3.21.1 来运行这些测试,并且测试是使用 gtest 框架编写的。

我不认为这是我的系统环境的问题,我可以制作一个小的 C++ 程序来产生段错误并生成核心转储。问题是从使用 ctest 运行的测试生成核心转储。

I am having a problem with unit tests failing randomly with seg faults and I cant figure out how to generate core dumps from those tests.

I am using cmake and ctest 3.21.1 to run those tests, and the tests are written using the gtest framework.

I dont believe it is a problem with the environment of my system, I can make a small c++ program that segfaults and generate a core dump. The problem is generating core dumps from tests ran using ctest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笨笨の傻瓜 2025-01-18 09:34:15

如果 GTest 是底层测试框架,则有一个 GTest 命令行选项可以在 Windows 上提供帮助:MyTest.exe --gtest_catch_exceptions=0

注意:这并不能回答有关 CTest 的问题。我还没有找到类似的 CTest 选项。

来自 GTest 的帮助信息:

Assertion Behavior:
  --gtest_break_on_failure
      Turn assertion failures into debugger break-points.
  --gtest_throw_on_failure
      Turn assertion failures into C++ exceptions for use by an external
      test framework.
  --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).

If GTest is the underlaying test framework, there is a GTest command line option that has helped on windows: MyTest.exe --gtest_catch_exceptions=0

Note: This doesn't answer the question about CTest. I haven't found a similar option for CTest.

Help info from GTest:

Assertion Behavior:
  --gtest_break_on_failure
      Turn assertion failures into debugger break-points.
  --gtest_throw_on_failure
      Turn assertion failures into C++ exceptions for use by an external
      test framework.
  --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).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文