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