Android NDK开发如何解决logcat日志打印不全

      Android NDK开发如何解决logcat日志打印不全  

      在Android开发过程中可能会遇到超长日志打印问题,如果日志过长如果一次性Log.d输出就会造成logcat终端只打印一部分,后面的全部打印不出来。具体原因没有查到,应该跟输出的缓存大小有关系。

       在java层就遇到过,然后通过分段输出解决。最近开发NDK so发现__android_log_print也有这个问题。

       在NDK开发时c++处理也和java一样,把日志分段处理,直接贴代码

#ifdef __ANDROID__
#define DEBUGPRINT(tag, msg) __android_log_print(ANDROID_LOG_DEBUG, tag, "%s", msg)
#else
#define DEBUGPRINT(tag, msg) fprintf(stdout, "%s/D %s\n", tag, msg);
#endif

inline void DLONGLOG(const char* tag, const char *msg) {
	const size_t max_len = 60;
	size_t len = strlen(msg);
	if (len < max_len) {
		DEBUGPRINT(tag, msg);
		return;
	}

	DEBUGPRINT(tag, "==============start of long log===============");
	int lineNo = 0;
	char szLine[max_len];
	size_t prefixLen = 0;
	size_t consumed = 0;
	do {
		memset(szLine, '\0', max_len);
		prefixLen = snprintf(szLine, max_len, "line[%d] --->  ", lineNo);
		strncat(szLine, msg + consumed, max_len - 1 - prefixLen);
		DEBUGPRINT(tag, szLine);

		consumed += strlen(szLine) - prefixLen;
		++lineNo;
	} while (consumed < len);
	DEBUGPRINT(tag, "==============end of long log===============");
}

 

 

你可能感兴趣的:(android开发,C,C++语言开发)