是否可以查看命令行应用程序运行后执行了哪些行?

问题描述 投票:0回答:2

我在我的应用程序中使用 MinGW (GCC) 作为 C++ 编译器。我已将其设置为将其命令行进程的输出重定向到我的应用程序。现在,假设我有以下简单的 C++ 代码:

int n = 5;
if (n == 6) cout << "YES";
else cout << "NO";

有没有办法知道应用程序执行期间实际命中了哪些代码行?是否有一个命令我可以发送到 MinGW (GCC) 进程,对于给定的示例,该命令将输出 1 和 3,因为这些是命中的行。另外,如果“for”循环内有一行,则可以判断该语句实际被命中了多少次?

如果不可能,获取这些信息的最佳方法是什么?开发我自己的编译器还是......?预先感谢

编辑:有人可以提供一段命令(在 Windows 中)用于创建启用覆盖的 GCC exe 文件吗?

c++ gcc mingw interpreter
2个回答
4
投票

“有没有办法知道在应用程序执行期间实际命中了哪些代码行?”

是的。这是 GCC 的固有功能。您需要使用

--coverage
-lgcov
-fprofile-arcs
选项集编译和链接代码。

gcov
工具可用于整合和解释程序运行期间收集的实际信息,这些信息是通过
--coverage
检测的。

lcov是一个非常好的工具,可以从gcov输出生成可浏览的综合且相当可视化的覆盖信息。


0
投票

既然你使用的是 mingw,你应该能够使用 gcov:https://gcc.gnu.org/onlinedocs/gcc/Gcov.html

© www.soinside.com 2019 - 2024. All rights reserved.