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

标签 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,因为它们是命中的行。而且,如果在“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/

相关文章:

c++ - 从大型 github 项目链接共享库

c - GCC 汇编内联 : Function Body with Only Inlined Assembly Code

c++ - 使用 boost::iostreams::mapped_file 时的内存使用情况

c++ - 如果类中没有保持类状态的变量,函数应该声明为静态函数?

c++ - 字符串文字的隐式转换

c - 什么是头文件和库文件?

c++ - 如何编写递归下降解析器?

compiler-construction - 机器如何解释二进制?

gcc - 编译错误gcc -lpthread位置

c++ - if语句问题?