如何诊断日志日志功能错误,即返回负值时:
/*
* Send a formatted string to the log, used like printf(fmt,...)
*/
int __android_log_print(int prio, const char *tag, const char *fmt, ...);
谢谢!
答案 0 :(得分:1)
简短回答:检查错误。
答案很长:出现两个原因__android_log_print可以返回负值。第一个是它是否无法打开任何用于写入的日志文件(/ dev / log / main,/ dev / log / radio或/ dev / log / events)。第二种是write()系统调用返回负数。
__android_log_print返回负值后,是否设置了错误?如果是这样,它的价值应该会给你一些关于出了什么问题的信息。如果errno为零,则您的日志调用可能会在__write_to_log_null中结束,您应该调查您的程序打开这些/ dev / log文件的能力。
如果设置了errno,则可能在尝试打开日志文件时设置了它。您应该能够通过设置errno = 0来隔离这种情况,然后使用错误的log_id(第一个参数)调用__android_log_bug_write。为了使它有用,它需要是对任何日志记录函数的第一次调用 - 否则文件打开阶段已经过去了。显然,只有将errno设置为可能在写入时或打开时的某些内容时,才需要这样做。
这个答案来自于system / core / liblog / logd_write.c。