有人知道如何为了记录而动态获取传递给函数的所有变量值吗?
我正在寻找一种简单的方法(比如使用编译器宏)来记录函数,以及传递给它的变量值(然后将其写入日志文件,以便我们可以轻松找到输入导致功能崩溃)
我一直在尝试
#define NFDebug( s, ... ) NSLog( @"DEBUG: %s: %@", __PRETTY_FUNCTION__, \
[NSString stringWithFormat:(@"%@"), ##__VA_ARGS__] )
,它提供了一切,但变量值
答案 0 :(得分:1)
我使用这样的东西:
#ifdef YOUR_DEBUG_ENABLER_SYMBOL_ONLY_SET_IN_DEBUG_BUILDS
#define DEBUG_ONLY(_code_) _code_
#else
#define DEBUG_ONLY(_code_)
#endif
#define DebugLog(_str, ...) DEBUG_ONLY(NSLog(@"%s: " _str, __func__, ## __VA_ARGS__))
请注意,NSLog中的_str之前没有逗号 - 这意味着您在调用代码中使用的字符串被(由编译器)附加到“%s:”字符串,以成为NSLog的复合格式字符串。您想要打印的任何参数都可以包含在传入的格式字符串中。 %s适用于_ _ func _ _,而_str适用于传入的其他变量:
float f;
int i;
NSString* s;
// Initialise f, i, and s to something
...
// Log the values only when in debug mode, with function name auto-prepended
DebugLog(@"float is: %f - int is: %d - string is: %@", f, i, s);
这样做的好处是,您可以在调试时有条件地记录所需的任何文本和变量,并自动将函数名称添加到输出中。