c++打印执行的代码



是否有任何方法可以将正在执行的代码打印到文本文件中以进行调试?

例如:

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,这样我们只打印执行的行。没有线程保存或类似的东西。

我认为您想要的首先与调试无关,而是与单元测试和测试覆盖率有关:

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

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

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

然而,从理论的角度来看,创建一个输出自己的程序是可能的。这与你想要的有点不同,因为你只需要程序的一部分,但我最好的猜测是,只要稍加修改就可以完成。

最新更新