【发布时间】:2013-12-11 18:16:10
【问题描述】:
有没有办法将正在执行的代码打印到文本文件中以用于调试目的?
例如:
if (i == 1)
{
a = true;
}
else
{
a = false
}
所以当 i = 1 我们打印到一个文本文件:
if (i == 1)
{
a = true;
}
else
当 i != 1 我们打印到文本文件中
if (i == 1)
else
{
a = false
}
我并不是说这是一个好习惯。我知道 gdb 和其他工具在调试代码方面要好得多,所以如果您认为这是一个糟糕的想法,请不要生气。我只是想知道它是否可以完成。这就像在每一行之后添加一个 printf,所以我们只打印被执行的行。没有线程保存或类似的东西。
【问题讨论】:
-
您使用的是什么调试器/编译器?如果你有 Visual Studio 之类的东西,你可以编译 w/ 调试信息以获得与你想要的功能相似的功能。
-
您可以使用运行 gdb 的脚本来完成。从编译器来看这是不可能的。
-
不太可能;对于任何“真正的”程序,结果将是千兆(如果不是太字节)。
-
我可以放心地说:没有问题,这是正确的解决方案。
-
嗯,您可能真的在这里要求 XY 问题。请详细说明您的用例。正如我在回答中提到的,可以使用覆盖分析代码注入来分析执行的代码路径。运行特定的测试用例(输入选择)将为您提供详细的覆盖率报告,哪些代码路径的执行频率。