http://klee.llvm.org/是一个程序分析工具,它通过符号执行和约束求解来工作,找到可能导致程序崩溃的输入,并将这些输出作为测试用例输出.这是一个非常令人印象深刻的工程,到目前为止已经产生了一些好的结果,包括在Unix实用程序的开源实现集合中发现了许多错误,这些错误被认为是有史以来最全面测试的软件之一.
我的问题是:它不做什么?
当然,任何这样的工具都有固有的限制,它无法读取用户的想法并猜测输出应该是什么.但抛开原则上是不可能的,大多数项目似乎还没有使用Klee; 当前版本的限制是什么,它还没有处理哪种类型的错误和工作负载?
我正在使用一个名为KLEE的测试生成工具,它为我的C99-Code创建了大量测试.然后我运行测试并用gcov检查线路覆盖.Gcov似乎在成功完成后在运行结束时更新覆盖数据.
但是,某些测试失败(断言声明不正确),导致程序中止,而gcov不计算此运行中涵盖的行.
有没有办法让gcov刷新任何退出的信息(不仅仅是成功)?