使用check调试C中的单元测试

使用check调试C中的单元测试,c,unit-testing,debugging,gdb,check-framework,C,Unit Testing,Debugging,Gdb,Check Framework,我正在尝试为我的C应用程序使用单元测试框架。但我不能将调试器(gdb)与它一起使用,因为有两点: 首先,选中use some complex macros(START\u TEST和END\u TEST),调试器很难在我的代码中在这两个宏之间设置断点(事实上,我可以设置软件断点,但gdb从未看到) 其次,检查通过重新定义中断行为来定义某种类型的异常。因此,当我尝试设置硬件断点时,测试失败并退出,因为检查将硬件断点视为测试失败。 是否有人已经遇到了这个问题并找到了解决方案?尝试(测试任何协议)

我正在尝试为我的C应用程序使用单元测试框架。但我不能将调试器(gdb)与它一起使用,因为有两点:

  • 首先,选中use some complex macros(
    START\u TEST
    END\u TEST
    ),调试器很难在我的代码中在这两个宏之间设置断点(事实上,我可以设置软件断点,但gdb从未看到)

  • 其次,检查通过重新定义中断行为来定义某种类型的异常。因此,当我尝试设置硬件断点时,测试失败并退出,因为检查将硬件断点视为测试失败。

是否有人已经遇到了这个问题并找到了解决方案?

尝试(测试任何协议)…它更易于实现、发布和调试。它也很容易让人意识到,而且往往玩得更好。

看看:

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


实际上,您也可以使用fork模式

gdb有两个与fork行为相关的有趣选项:
-
在拨叉上分离(将此设置为false)
-
follow-on-fork
(父母或孩子;我总是带孩子)

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

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

gdb > set environment CK_FORK=no

这对我很管用。然后,我可以在测试用例调用的函数(即测试中的函数)中设置一个断点,断点在正确的位置断开。

从2016-09-23开始,指向404的点击链接。主要网站ozlabs.org仍在运行,但我找不到TAP信息。Wikipedia有一个关于;在C++、java、JavaScript、Python、Perl等中有一个用于实现的网站。