我正在android平台上进行一些算法开发。我想修改我过去的开发人员代码并添加关键字,因为他已经在代码中放了这么多有用的日志信息。但我想通过logcat
grep一个新关键字来查看我想要的所有有用日志。
1.想法是使用:adb logcat
| grep'关键字'查看日志文件。例如,关键字可以是人名詹姆斯。
2.过去的开发人员像这样在头文件中重新编写ALOGE。并在.c文件中添加了许多LOG_ACD。
#define LOG_ACD(fmt, args...) if (acd->stats_debug_mask & STATS_DEBUG_MASK_ACD_LOG) ALOGE(fmt, ##args)
c中的示例是LOG_AcD("%s:acd_enable%d,监视%d,freq%d,afd_state%d,acd_atb%d", func ,output-> acd_enable,output-> acd_monitor, output-> freq,output-> acd_state,output-> acd_atb);
3.如何将关键字添加到上面的代码行中以强制.c文件中的每一行LOG_ACD都有我的新关键字?对我来说有趣的部分是ALOGE本身不是字符串,格式字符串将在.c文件中生成。
我希望我能清楚地描述这个问题。谢谢你们
答案 0 :(得分:0)
您说格式字符串将在C文件中生成。我想你并不是说你说的话。
对于类似printf
的函数,通常指定文字格式字符串。 (格式字符串是包含所有格式说明符的字符串,如%d
。文字字符串是双引号之间的以零结尾的字符串常量。)如果是这种情况(并且您的示例支持此假设),则可以使用string-literal concatenation:
#define LOG_ACD(fmt, args...) ALOGE("ACD: " fmt, ##args)
两个相邻的字符串文字被编译为一个,例如"A" "B"
与"AB"
基本相同。当格式字符串不是文字字符串时,宏将生成编译时错误,但如上所述,这是不寻常的。