Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在CPP单元下运行的测试产生的分段故障_C++_Unit Testing_Unix_Cppunit - Fatal编程技术网

C++ 在CPP单元下运行的测试产生的分段故障

C++ 在CPP单元下运行的测试产生的分段故障,c++,unit-testing,unix,cppunit,C++,Unit Testing,Unix,Cppunit,今天我发现我的一个测试是使用一些代码/库来区分错误。 我在Linux环境下用C++和CppUnit工作。 CPPFUnit中是否有任何功能特性可以针对segfault进行测试,并将其报告为特定测试用例的故障 在CPPFUnit中,我甚至可以针对异常进行测试,但我认为我所要求的可能太多了!我唯一找到的是如何在此页面打印调试信息的部分 我想从pyhon或perl脚本中运行CppUnit可执行文件,然后检查是否生成了内核。您知道实现我想要的更好的方法吗?“CppUnit中是否有任何功能可以针对SEGF

今天我发现我的一个测试是使用一些代码/库来区分错误。 我在Linux环境下用C++和CppUnit工作。 CPPFUnit中是否有任何功能特性可以针对segfault进行测试,并将其报告为特定测试用例的故障

在CPPFUnit中,我甚至可以针对异常进行测试,但我认为我所要求的可能太多了!我唯一找到的是如何在此页面打印调试信息的部分

我想从pyhon或perl脚本中运行CppUnit可执行文件,然后检查是否生成了内核。您知道实现我想要的更好的方法吗?

“CppUnit中是否有任何功能可以针对SEGFULT进行测试,并将其报告为特定测试用例的失败?”

没有。Segfault是操作系统级别的违规行为,不允许您捕获它。即使您尝试(通过使用signal()iirc),您也无法避免被操作系统谋杀


您需要使用调试器逐步完成测试程序。

seg故障将导致测试的非零退出状态(在Solaris上,我相信是139)。无论使用什么方法来调用单元测试,您都能够对其进行测试吗?

添加了unix标记-SEGFAULT不是泛型的。您好。谢谢大家的回复。最后,我决定在批处理模式下使用GDB运行测试。它稍微慢一点,但至少在出现分段错误的情况下,它会记录问题所在的代码[文件/行]的确切位置。我使用以下命令:gdb./testApp-ex“set args./testClient.cfg”-ex r--batchUm,cppunit可以调用sigaction并处理SIGSEGV,并将其报告为failure.Hi。谢谢你的回复…也许我问了不可能的问题…但在Linux中我记得也是相同的代码,所以我可能会被检查。