c ++打印执行代码

时间:2013-12-11 09:36:13

标签: c++ debugging printf

有没有办法在文本文件中打印出为执行调试而执行的代码?

例如:

if (i == 1)
{
 a = true;
}
else
{
 a = false
}

因此当i = 1时,我们打印到文本文件:

if (i == 1)
{
 a = true;
}
else

当我!= 1时,我们打印到文本文件

if (i == 1)
else
{
 a = false
}

我不是说这是一个好习惯。我知道gdb和其他工具在调试代码方面要好得多,所以如果你认为这是一个糟糕的主意,请不要生气。我只是想知道它是否可以完成。这就像在每行之后添加一个printf所以我们只打印执行的行。没有线程保存或类似的东西。

2 个答案:

答案 0 :(得分:0)

我认为你想要的东西与调试无关,而是与单元测试和测试覆盖率有关:

您需要为您的代码创建单元测试(例如使用googletest),并在打开代码覆盖率选项的情况下对其进行编译(例如,对于GCC,--coverage)。然后,您可以使用工具创建覆盖率报告(例如,lcov/genhtml用于上述工具链。)

单元测试将控制您的案例的输入(i = 1/0)。

答案 1 :(得分:-1)

出于调试目的,我会说这不实用。是的,您可以在每行执行之前/之后执行printf,但这只会阻塞您的程序。另外,如果你正在谈论调试循环的执行,你将最终一遍又一遍地打印一堆垃圾,并且必须永远寻找潜在的错误。简而言之,使用断点。

但是,从理论的角度来看,可以创建program that outputs itself。这与你想要的有点不同,因为你只需要你的程序的一部分,但我最好的猜测是,只需稍加修改就可以完成。