首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用check在C中调试单元测试

使用check在C中调试单元测试
EN

Stack Overflow用户
提问于 2009-10-30 13:28:10
回答 4查看 4.7K关注 0票数 7

我试图在我的C应用程序中使用检查单元测试框架。但是我不能使用调试器(gdb),因为有两点:

  • 首先,检查使用一些复杂的宏(START_TESTEND_TEST),调试器很难在这两个宏之间的代码中放置一个断点(实际上,我可以放置一个软件断点,但gdb从未见过)。
  • 其次,通过重新定义中断行为来检查定义某些类型的异常。因此,当我尝试放置一个硬件断点时,测试失败并退出,因为check认为硬件断点是测试的失败。

有没有人遇到过这个问题,有解决的办法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-30 14:48:51

看看无叉模式

通常检查分叉以创建单独的地址空间。这允许捕获和报告信号或早期退出,而不是删除整个测试程序,而且通常非常有用。但是,当您试图调试分段错误或其他程序错误发生的原因时,分叉会使调试工具难以使用。

票数 12
EN

Stack Overflow用户

发布于 2010-09-04 06:50:19

实际上,你也可以使用分叉模式。

gdb有两个与叉子行为相关的有趣选项:

  • detach-on-fork (将此设置为false)
  • follow-on-fork (父母或孩子;我总是带孩子)

这将使gdb遵循子进程。当子进程结束时,必须使用inferior命令手动切换回父进程。

票数 7
EN

Stack Overflow用户

发布于 2018-05-18 23:26:12

我读过,他提出了一个非常简单的解决方案:

代码语言:javascript
运行
复制
gdb > set environment CK_FORK=no

对我起作用了。然后,我可以在测试用例调用的函数(即正在测试的函数)中设置一个断点,然后它在正确的位置崩溃。

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

https://stackoverflow.com/questions/1649814

复制
相关文章

相似问题

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