Kar*_*k S 16 c c++ macros logging
在我最近与我的经理的一次讨论中,他提到他的一位前客户使用C++宏来记录有关每行代码的信息.他们所要做的就是在开始运行之前启用环境变量.(当然,环境变量仅在测试床中启用.
日志提到了使用的变量及其对应的值.例如,对于该行:
a = a + b;
Run Code Online (Sandbox Code Playgroud)
日志会说:
"a = a + b; (a = 5 + 3)"
Run Code Online (Sandbox Code Playgroud)
就个人而言,我不确定这是否可能,但他非常确定这已经存在,尽管他不记得代码的具体细节.
所以,这是(显而易见的)问题:这可能吗?你能提供这个代码吗?
rou*_*nin 18
我不知道是否可以像这样扩展每一行/变量,但可以记录函数调用.我使用-finstrument-functionsgcc选项记录了所有函数调用.它会打电话给:
void __cyg_profile_func_enter (void *this_fn, void *call_site);
Run Code Online (Sandbox Code Playgroud)
和
void __cyg_profile_func_exit (void *this_fn, void *call_site);
Run Code Online (Sandbox Code Playgroud)
功能进入和退出.
文档解释了如何使用它.我不知道其他编译器是否提供类似的东西.