Dan*_*iel 6 c++ debugging logging
我正在制作一个c ++库,它将从c#调用P/Invoke,所以我无法断点/调试c ++方面的东西.所以我决定添加日志记录,以便我可以看到是否出现任何问题以及发生了什么.我添加一个#define DebugMode 1以确定我是否要记录.首先,我不是很擅长c ++,但我知道足够的解决方案.所以我的问题是:
有没有比#if DebugMode #endif围绕每个日志调用包装更好的方法?我可以简单地在Log方法中执行此操作,如果未启用日志记录则返回但是这并不意味着所有这些日志字符串都将在程序集中?
我如何模仿printf使用"..."运算符做什么,使我能够通过类似的东西 Log("Variable x is {0}", x);
是否有任何技巧,如获取我可以在日志中使用的某种行号或堆栈跟踪信息?
谢谢!
一种简单的方法是只定义一个宏,如果你没有处于调试模式,它什么都不做.这样你就不必把每个电话都包起来了#ifdef.
一个简单的实现可能是:
#if DebugMode
#define MY_LOG(string, ...) printf(string, __VA_ARGS__)
#else
#define MY_LOG(string, ...)
#endif
Run Code Online (Sandbox Code Playgroud)
还有其他方法和库(例如boost),但这会让你快速得到一些东西.