我在我的应用程序中使用 MinGW (GCC) 作为 C++ 编译器。我已将其设置为将其命令行进程的输出重定向到我的应用程序。现在,假设我有以下简单的 C++ 代码:
int n = 5;
if (n == 6) cout << "YES";
else cout << "NO";
有没有办法知道应用程序执行期间实际命中了哪些代码行?是否有一个命令我可以发送到 MinGW (GCC) 进程,对于给定的示例,该命令将输出 1 和 3,因为这些是命中的行。另外,如果“for”循环内有一行,则可以判断该语句实际被命中了多少次?
如果不可能,获取这些信息的最佳方法是什么?开发我自己的编译器还是......?预先感谢
编辑:有人可以提供一段命令(在 Windows 中)用于创建启用覆盖的 GCC exe 文件吗?
“有没有办法知道在应用程序执行期间实际命中了哪些代码行?”
--coverage
、-lgcov
或 -fprofile-arcs
选项集编译和链接代码。
gcov
工具可用于整合和解释程序运行期间收集的实际信息,这些信息是通过--coverage
检测的。
lcov是一个非常好的工具,可以从gcov
输出生成可浏览的综合且相当可视化的覆盖信息。
既然你使用的是 mingw,你应该能够使用 gcov:https://gcc.gnu.org/onlinedocs/gcc/Gcov.html