2012-10-23 23 views
2

比方说,我已经对整体变量的几个“基本”的算法,如程序:是否有一个记录代码执行的工具?

if(a<b) 
    a += c; 

是否有一个工具,让我自动登录在运行不同的变量所做的所有更改时间?

例如它会在一个日志文件的情况下显示:

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

或某些等效。

我知道我可以手动记录每个操作,但是这将是过于复杂。 有什么工具可以让我做这样的事吗?我不关心重构/重新编译,只要它不是完全手动的。

+0

你看到这个题目:http://stackoverflow.com/questions/7468576/c-macro-to-log-every-line-of-code?rq=1 –

回答

1

您可以编写自己的整数类,因此重载运算符(带有自动记录)。如果类还提供了隐式转换(一个构造函数从int和一个转换运算符到int),那么您“仅”需要更改变量和参数的类型,以便自动记录。但是不是名字,你只能记录地址(或者从var20中派生出来的东西)。在#define的帮助下,您可以轻松地在原始整数(不记录日志)或整数类之间进行切换。

也得到变量入日志的名字一个要么与宏改写运营商如

if (LESS(a,b)) 
    INC(a,c) 

或有一个解析器,自动将您的密码弄成这个样子。但我不知道任何现有的工具提供这一点。

0

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

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

正确的解决方案取决于实际问题,但完全执行日志不可能是任何事情的正确解决方案。

相关问题