【问题标题】:C++ Execution Trace Implementation SuggestionsC++ 执行跟踪实现建议
【发布时间】:2014-11-18 14:32:41
【问题描述】:

所以。我正在完成一个项目,但我不确定如何实施其中的一小部分。我真的很感激一些建议:)

指南规定:

还有一个系统维护人员的角色,他也有一个 id 来访问系统。她/他可以打开/关闭执行跟踪。如果跟踪为 ON,那么系统会将执行跟踪转储到一个文件中,该文件可以在以后由维护人员打印出来。每个执行跟踪都会记录用户身份数据、系统访问时间以及用户执行操作的执行跟踪(进入和退出哪些系统功能)。因此,系统将按照 ON/OFF 触发器的顺序转储执行跟踪,每个客户使用系统一个。

我正在考虑使用#DEFINE 标头,以使此函数可全局访问。但我不知道从哪里开始。任何提示,或任何更好的想法/解决方案?至于用户数据、时间和打印实际文件,我对如何做这些有想法。只是不确定如何实现它们。

提前致谢:)

【问题讨论】:

  • 您真的不想每次打开或关闭功能时都重新编译所有代码 - 这需要在运行时进行。
  • 是的,我完全同意。
  • 这对我来说是个棘手的部分:p

标签: implementation trace execution


【解决方案1】:

通常要做的是编写一个函数,将所有跟踪写入文件,但是你想这样做(很简单)。然后在直接使用该函数之前,您创建一个表示天气跟踪打开或关闭的布尔标志,并创建一个宏,每次需要跟踪时都使用它们。所以你会有这样的东西:

bool _isTraceOn;
void writeTraceToFile(char* traceData){...}
#define TRACE(traceData) if (_isTraceOn){writeTraceToFile(traceData)}

因此,当您要跟踪时使用“TRACE”,这样当您打开/关闭跟踪时,您只需切换 _isTraceOn 的值;

【讨论】:

  • 优秀。不过有一个问题;你是什​​么意思“写下你所有的痕迹”?是否有将函数调用发送到的转储?我很抱歉我对 C++ 的经验很少,非常感谢你为我做的事情! :) 干杯
  • 不,您必须将上面的代码插入到您想要跟踪的任何位置。我喜欢在主要功能的入口处和特定的路口进行跟踪,以查看执行中实际发生的情况。
  • 我将(第 3 行)#define 行写入我的标题中,并将(第 2 行)void write(...) 在源代码底部的函数定义中,bool 声明在哪里去吗?
  • 我会把它放在define旁边。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多