是否有一个工具来记录代码执行
is there a tool to log the code execution?
,假设我有一个由几种积分变量制成的程序,例如:
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策略。如果您想要一种描述以后检查/操作的完整执行的方法,则可以确保程序行为确定性并保存程序输入。
正确的解决方案取决于实际问题,但是完全执行记录不可能是对任何事物的正确解决方案。
相关文章:
- 以下代码执行哪种内存分配(动态或静态)?
- 允许多个互斥锁所有者或指定数量的并发代码执行
- 使用 execv 从C++代码执行的 Linux 脚本失败
- 由于找不到cpprest_2_10.dll,代码执行无法继续
- 在每次循环迭代时停止代码执行毫秒
- 与Java相比,为什么此C 代码执行速度如此慢
- 记录组件代码执行
- 相同的代码执行两次:性能差异
- 代码执行/CPU 速度每 2 秒减慢一次
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- 如何将字符串从C++DLL返回到MetaTrader 4代码执行生态系统?
- 当我从java代码执行C++时不显示任何输出
- C++和共享库中的代码执行点
- 递归期间代码执行中断
- 为可选的评测代码执行进行高效设计
- 我正在尝试使用 ifstream 将此 C 函数的等效代码执行到 c++ 中
- 最佳C 11测量嵌入式系统代码执行时间的方法
- 如何在iOS应用程序中锁定代码执行
- 中断代码执行
- 是否有一个工具来记录代码执行