首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不知道使用google-test引发异常的位置

不知道使用google-test引发异常的位置
EN

Stack Overflow用户
提问于 2015-05-14 14:31:25
回答 3查看 11K关注 0票数 6

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

基本上,当代码中有一个不明确的异常时,我在控制台中得到以下错误消息,并得到一个失败的。显然,例外情况是由google测试捕获的。但是,我一点也不知道哪里是异常抛出。

未知文件:错误:在测试体中抛出代码0xc000005的SEH异常。

我所能做的就是调试并逐步完成代码,我最终会发现问题出在哪里。但这并不是很有效率,因为这个项目很大。

我希望调试器停止在默认异常线,并给我一个很好的调用堆栈。谷歌测试中有没有我不知道的设置?任何其他工作或建议将是非常感谢的。

编辑:我正在寻找类似于Windows下的以下内容

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-14 14:56:20

SEH异常是而不是,是C++异常。

它是在标准C++框架之外抛出的用于异常处理的窗口异常(捕获它们有不同的语法)。

找到位置的最好方法是在DevStudio中运行这个位置。已经有一段时间了,但我确信,当抛出SEH异常时,DevStudio可以选择中断。只要打开它,调试器就会在抛出点停止,并允许您进行调试。

请参阅:https://msdn.microsoft.com/en-us/library/d14azbfh.aspx

正如@MatthiasVegh所指出的,您也应该通过测试的名称,这样您就不必运行所有的测试。

票数 2
EN

Stack Overflow用户

发布于 2015-05-14 14:40:48

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

代码语言:javascript
复制
gdb /path/to/test
catch throw
r --gtest_filter='Test.Testcase' --gmock_verbose=info
bt

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

票数 13
EN

Stack Overflow用户

发布于 2015-05-14 14:39:26

这是不可能的,因为C++没有在异常对象中保持堆栈跟踪,而且即使gtest有一些智能捕获机制,它也无法知道异常来自何处。您能做的最好是自己在异常中存储一些信息,并在测试用例中检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30239987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档