Yuc*_*ong 4 c++ exception-handling exception googletest visual-studio-2013
我们使用Google Test作为我们的C++单元测试框架.但我遇到了一个痛苦的局面,不知道如何应对.
基本上,当代码中有未捕获的异常时,我在控制台中打印了以下错误消息并获得FAILED.显然,例外是谷歌测试捕获.但是,我根本没有任何信息,抛出异常.
未知文件:错误:测试正文中抛出代码为0xc000005的SEH异常.
我能做的就是调试并逐步完成代码,最终我会找出问题所在.但由于项目很大,这不是很有效.
我希望调试器停在未捕获的异常行并给我一个很好的调用堆栈.谷歌测试中有任何我不知道的设置吗?任何其他工作或建议将非常感谢.
编辑:我在Windows下寻找类似下面的内容

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

小智 9
在工作中我使用的方法是使用gdb运行只有失败的测试用例,如下所示:
gdb /path/to/test
catch throw
r --gtest_filter='Test.Testcase' --gmock_verbose=info
bt
Run Code Online (Sandbox Code Playgroud)
使用visual studio,我怀疑你应该能够使用上面的参数启动你的二进制文件,并为任何throw设置一个断点,然后看看backtrace.
SEH 异常不是C++ 异常。
它是一个 Windows 异常,被抛出到标准 C++ 框架之外进行异常处理(有不同的语法来捕获它们)。
找到该位置的最佳方法是在 DevStudio 中运行它。已经有一段时间了,但我确信 DevStudio 可以选择在抛出 SEH 异常时中断。只需打开此功能,您的调试器就会在抛出点停止并允许您进行调试。
请参阅:https ://msdn.microsoft.com/en-us/library/d14azbfh.aspx
正如@MatthiasVegh 所指出的,您还应该传递测试的名称,这样您就不必运行所有测试。
| 归档时间: |
|
| 查看次数: |
5765 次 |
| 最近记录: |