我在我的应用程序中使用 MinGW (GCC) 作为 C++ 编译器。我已将其设置为将其命令行进程的输出重定向到我的应用程序。现在,假设我有以下简单的 C++ 代码:
int n = 5;
if (n == 6) cout << "YES";
else cout << "NO";
有没有办法判断在应用程序执行期间实际命中了哪些代码行?是否有我可以发送到 MinGW (GCC) 进程的命令,对于给定的示例,该进程将输出 1 和 3,因为它们是命中的行。而且,如果在“for”循环中有一行,要告诉该语句实际被命中了多少次?
而且,如果不可能,获得这些信息的最佳方法是什么?开发我自己的编译器还是...?提前致谢
编辑:有人可以提供一段命令(在 Windows 中)以用于创建启用覆盖的 GCC exe 文件吗?
最佳答案
"Is there a way to tell what line(s) of code were actually hit during execution of the application?"
是的。这是一个内在的 GCC 特性。您需要编译代码并将其链接到 --coverage
, -lgcov
or -fprofile-arcs
选项集。
gcov
tool可用于整合和解释在程序运行期间收集的实际信息,这些信息使用 --coverage
进行检测。
从 gcov
输出中生成可浏览的综合且相当可视化的覆盖信息的一个非常好的工具是 lcov .
关于c++ - 是否可以查看在命令行应用程序运行后执行了哪些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872126/