我的C应用程序使用第三个库,它们进行自己的内存管理.为了保持健壮,我的应用程序具有代码来处理由于缺少可用内存而导致的库函数故障.
我想测试这段代码,为此,我需要模拟由于内存不足而导致的故障.
推荐使用什么工具?我的环境是Linux/gcc.
我使用Makefile(在Linux下运行GNU make)来重构Python脚本时自动完成我的工作.该脚本创建了一个输出文件,我想确保输出文件在我的重构中保持不变.
但是,我发现无法获取命令的状态代码以影响后续shell if命令.
以下规则说明了问题:
check-cond-codes:
diff report2008_4.csv report2008_4.csv-save-for-regression-testing; echo no differences: =$$!=
diff -q poalim report2008_4.csv; echo differences: =$$!=
Run Code Online (Sandbox Code Playgroud)
第一个'diff'比较两个相同的文件,第二个比较两个不同的文件.输出是:
diff report2008_4.csv report2008_4.csv-save-for-regression-testing; echo no differences: =$!=
no differences: ==
diff -q poalim report2008_4.csv; echo differences: =$!=
Files poalim and report2008_4.csv differ
differences: ==
Run Code Online (Sandbox Code Playgroud)
显然'$$!' 是捕获'diff'状态代码的错误变量.即使在Makefile开头使用SHELL:=/bin/bash也无法解决问题.
返回我需要的值的变量(如果它存在的话)将在真实规则中的'if'命令中使用.
创建一个小的ad-hoc shell脚本代替在Makefile中内联编写所有命令的替代方案是不可取的,但我会将它作为最后的手段使用它.
有关:
是否有人使用Jenkins的Measurement Plots插件和带有标签的xUnit测试结果文件成功获得了一个情节?
如果是,我希望看到一个正在运行的xUnit文件的示例,并从中获取有关配置Jenkins和相应的Jenkins作业以完成此专长的任何提示.
我为Guile开发了一个扩展模块,用C语言编写.这个扩展模块嵌入了一个Python解释器.
由于此扩展模块调用Python解释器,我需要验证它是否正确管理Python对象占用的内存.
我发现Python解释器在其自己的内存处理中表现良好,因此通过运行valgrind,如果没有其他干扰因素,我可以发现由于我自己的Python解释器嵌入代码中的错误导致的内存泄漏.
但是,当我在valgrind下运行Guile时,valgrind会报告内存泄漏.由于我自己的代码,这种内存泄漏会掩盖任何内存泄漏.
问题是如何将由于我的代码中的错误导致的内存泄漏与valgrind报告的内存泄漏(由于Guile导致的内容泄漏)分开.另一个工具而不是valgrind?特殊的valgrind选项?放弃并依赖手动代码演练?