是否有一个工具来记录代码执行

is there a tool to log the code execution?

本文关键字:代码 执行 记录 有一个 工具 是否      更新时间:2023-10-16

,假设我有一个由几种积分变量制成的程序,例如:

if(a<b)
   a += c;

是否有一个工具可以让我自动记录运行时变量的所有更改?

例如,它将在日志文件中显示:

 "condition passed because 5=a < b=10
     a += 10; because c=10"

或等效的。

我知道我可以手动记录每个操作,但这太复杂了。有没有任何工具可以让我这样做?我不在乎重构/重新编译,只要它不是完全手动的。

您可以编写自己的整数类,以相应地(使用自动记录)超载运算符。如果类还提供隐式转换(从INT和转换运算符到INT的构造函数),则您只需要更改变量和参数的类型才能使您的自动记录 values 。但是,您只能数字地址(或像VAR20这样的东西)。借助#Define,您可以轻松地在RAW INT(无记录)或带有记录的整数类之间切换。

要将变量的名称转入日志记录中,将不得不用

之类的宏来重写操作员
if (LESS(a,b))
    INC(a,c)

或有一个解析器,将您的代码自动转换为类似的东西。但是我不知道提供此服务的任何现有工具。

我很难想象记录这样的程序的完整执行将是有用的。简单的std::cout << "hello, world!n";会产生大量无用的日志。

您实际需要做什么?如果您想调试代码,则可能应该使用调试器检查程序,而不是使用printf-debugging-gone-to-wrong-wrong策略。如果您想要一种描述以后检查/操作的完整执行的方法,则可以确保程序行为确定性并保存程序输入。

正确的解决方案取决于实际问题,但是完全执行记录不可能是对任何事物的正确解决方案。