2010-06-14 142 views
1

我有一个使用安装程序的Cocoa应用程序。我希望能够在代码上运行代码覆盖(安装完成后)。如何在已安装的Cocoa应用程序上运行Gcov?

这不是通常的单元测试场景,其中一个二进制文件将运行一组测试。相反,有问题的测试会在运行时与UI和应用程序后端进行交互,因此我希望能够在知道Gcov正在分析它并对其执行测试的情况下启动应用程序。

任何想法?

更新

感谢mustISignUp。为了澄清为什么我问这个问题:

我犯的错误是想对象,.gcno和.gcda文件必须与二进制文件一起安装(从而使安装程序很困难)。碰巧,文件的原始位置与代码代码一起硬连线到代码中。

我使用的解决方案是在构建机器上压缩代码并将其放在测试机器的磁盘上。 lcov(或只是gcov)可以从那里运行。或者,.gcda文件将在磁盘上创建,并且必须将其复制回包含源代码的机器。

无论哪种方式,源代码不必在安装和运行时出现,但如果您希望将结果恢复为lcov样式,则生成的coverage计数器文件必须与源代码一致。

回答

1

应用程序需要用正确的GCC标志进行编译,这会将分析指令插入到代码中。这不是你可以打开和关闭的东西。即您的代码在编译时被修改以输出覆盖信息。

所以,如果你用正确的标志的编译应用程序,它将会发射覆盖数据,如果你没有,它不会(你肯定不会希望它为应用你要分发) 。

相关问题