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

时间:2014-07-21 18:27:07

标签: c++ gcc compiler-construction mingw interpreter

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

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

有没有办法告诉在执行应用程序时实际遇到了哪些代码行?是否有一个命令可以发送到MinGW(GCC)进程,对于给定的示例,它将输出1和3,因为那些是命中的行。而且,如果在&#34; for&#34;内有一条线。循环,告诉该语句实际被击中多少次?

而且,如果不可能,获得这些信息的最佳方法是什么?开发我自己的编译器还是......?提前致谢

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

2 个答案:

答案 0 :(得分:4)

  

&#34;有没有办法告诉在执行应用程序时实际遇到了哪些代码行?&#34;

是。它是一个内在的GCC功能。您需要使用--coverage, -lgcov or -fprofile-arcs选项集编译和链接您的代码。

gcov tool可用于合并和解释在程序运行期间收集的实际信息,这些信息使用--coverage进行检测。

gcov输出生成可浏览的合并且相当可视化的covearage信息的一个非常好的工具是lcov

答案 1 :(得分:0)

由于你正在使用mingw,你应该可以使用gcov:https://gcc.gnu.org/onlinedocs/gcc/Gcov.html