我们使用 Google Test 作为我们的 C++ 单元测试框架。但是我遇到了一个痛苦的情况,不知道如何处理。
基本上,当代码中存在未捕获的异常时,我会在控制台中打印以下错误消息并得到一个FAILED。很明显,这个异常是被google test捕获的。但是,我根本不知道异常在哪里抛出。
unknown file: error: SEH exception with code 0xc000005 thrown in the test body.
我能做的就是调试和单步调试代码,我最终会找出问题所在。但这不是很有效,因为项目很大。
我希望调试器在未捕获的异常行处停止,并给我一个漂亮的调用堆栈。谷歌测试中有什么我不知道的设置吗?任何其他解决方法或建议将不胜感激。
编辑:我在 Windows 下寻找类似下面的东西
最后根据答案,我找到了 visual studio 的这个设置,现在一切都按照我想要的方式工作:)
最佳答案
在工作中,我使用的方法是使用 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/