0

両対数関数のエラー、つまり負の値が返された場合の診断方法:

/*
 * Send a formatted string to the log, used like printf(fmt,...)
 */
int __android_log_print(int prio, const char *tag,  const char *fmt, ...);

ありがとうございました!

4

1 に答える 1

1

簡単な答え:errnoを確認してください。

長い答え:__android_log_printが負の値を返す可能性がある理由は2つあります。1つ目は、書き込み用のログファイル(/ dev / log / main、/ dev / log / radio、または/ dev / log / events)を開くことができない場合です。2つ目は、write()システムコールが負の数を返す場合です。

__android_log_printが負の値を返した後、errnoは設定されていますか?もしそうなら、その値はあなたに何が悪かったかについてのいくつかの情報を与えるはずです。errnoがゼロの場合、ログ呼び出しはおそらく__write_to_log_nullで終了するため、これらの/ dev/logファイルを開くプログラムの機能を調査する必要があります。

errnoが設定されている場合は、ログファイルを開こうとしたときに設定された可能性があります。errno = 0に設定してから、不正なlog_id(最初の引数)を指定して__android_log_bug_writeを呼び出すことで、このケースを切り分けることができるはずです。これを有効にするには、ログ関数のいずれかを最初に呼び出す必要があります。そうしないと、ファイルを開く段階が終了します。明らかに、これはerrnoが書き込み時またはオープン時にあった可能性のあるものに設定されている場合にのみ必要です。

この答えは、system / core / liblog/logd_write.cの好意で提供されます。

于 2012-07-03T07:12:07.103 に答える