c++ - 不知道使用 google-test 在哪里抛出异常

标签 c++ exception visual-studio-2013 exception-handling googletest

我们使用 Google Test 作为我们的 C++ 单元测试框架。但是我遇到了一个痛苦的情况,不知道如何处理。

基本上,当代码中存在未捕获的异常时,我会在控制台中打印以下错误消息并得到一个FAILED。很明显,这个异常是被google test捕获的。但是,我根本不知道异常在哪里抛出。

unknown file: error: SEH exception with code 0xc000005 thrown in the test body.

我能做的就是调试和单步调试代码,我最终会找出问题所在。但这不是很有效,因为项目很大。

我希望调试器在未捕获的异常行处停止,并给我一个漂亮的调用堆栈。谷歌测试中有什么我不知道的设置吗?任何其他解决方法或建议将不胜感激。

编辑:我在 Windows 下寻找类似下面的东西 enter image description here

最后根据答案,我找到了 visual studio 的这个设置,现在一切都按照我想要的方式工作:) enter image description here

最佳答案

在工作中,我使用的方法是使用 gdb 仅运行失败的测试用例,如下所示:

gdb /path/to/test
catch throw
r --gtest_filter='Test.Testcase' --gmock_verbose=info
bt

使用 visual studio,我怀疑您应该能够像上面那样使用参数启动二进制文件,并为任何抛出设置断点,然后查看回溯。

关于c++ - 不知道使用 google-test 在哪里抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239987/

相关文章:

c++ - 元组大小默认构造函数及其到 std::size_t 的转换

java - 如何编写抛出异常的方法头

c++ - std::vector 已知序列

c# - D2DERR_RECREATE_TARGET 错误是否真的意味着我必须跟踪渲染目标创建的所有内容?

c++ - Boost、Windows 和 QtCreator

breeze - Breeze 何时支持 Entity Framework 6?

c++ - Kinect + Visual Studio 2013 LNK 错误,如何正确链接库?

java.util.ConcurrentModificationException 异常错误

vb.net - 抛出异常后如何继续运行代码?

vb.net - 如何检测仅在安装程序后才会出现的错误?