我想为我们的大型C ++代码库开发缩进的跟踪,这对于开发者来说是非常有帮助的。 我想要缩进跟踪function。 例如考虑下面的代码:
void FunctionA() { TR_ENTER("Function A"); TR_PRINT("Dignostic message Function A"); FunctionB(); // Call function B } void FunctionB() { TR_ENTER("Function B"); TR_PRINT("Dignostic message Function B"); FunctionC(); // Call function B } void FunctionC() { TR_ENTER("Function C"); TR_PRINT("Dignostic message Function C"); }
正如你所看到的,上面的调用是嵌套在一起的。 我想要生成跟踪日志,如下所示:
Function A - Start Dignostic message Function A Function B - Start Dignostic message Function B Function C - Start Dignostic message Function C Function C - End Function B - End Function A - End
TR_ENTER和TR_PRINT是我用作示例的一些macros。 要说function启动我使用TR_ENTER和打印一些dignostic消息我已经使用TR_PRINT。
正如你所看到的嵌套函数调用的痕迹是相互缩进的。 我是否知道有什么已经有的东西可以阻止自己重新开始工作。
在Visual C ++中使用dllimport
subprocess.Popen成功消息
从Windows中的系统时钟获取当前时间(以毫秒为单位)?
通过Python计算进程的cpu使用情况
谢谢,笨蛋
没有支持的颜色terminal库Python / Jupyter
打开Windows C#WPF
如何从控制台读取多行用户input?
x:用空string绑定图像
Python:'pyautogui'没有属性'截图'(Windows)
您需要跟踪通话深度:
class trace_entry; class trace_log { public: trace_log() : depth_(0) { } private: // noncopyable so we don't accidentally copy it trace_log(trace_log&); void operator=(trace_log); friend trace_entry; int depth_; }; class trace_entry { public: trace_entry(trace_log& log,const std::string& frame) : log_(log),frame_(frame) { std::cout << std::string(4 * log.depth_,' ') << "ENTER " << frame_ << std::endl; ++log_.depth_; } ~trace_entry() { --log_.depth_; std::cout << std::string(4 * log_.depth_,' ') << "EXIT " << frame_ << std::endl; } private: // noncopyable so we don't accidentally copy it trace_entry(trace_entry&); void operator=(trace_entry); trace_log& log_; std::string frame_; };
用法示例:
void a(trace_log& log) { trace_entry e(log,"a"); } void b(trace_log& log) { trace_entry e(log,"b"); return a(log); } int main() { trace_log log; trace_entry e(log,"main"); b(log); }
输出:
ENTER main ENTER b ENTER a EXIT a EXIT b EXIT main
这很容易扩展,以支持其他形式的日志记录,允许额外的日志消息,以及任何你想做的事情。 ( trace_log实际上是执行日志记录会好得多,但为了说明的目的,这是证明你正在尝试做什么的最简单方法。)
C ++中有很多的日志库,特别是我可以推荐Log4cxx 。 他们将帮助您构建和配置您的应用程序的日志消息输出。 要分析日志文件,你需要一个额外的工具,如Apache Chainsaw 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。