2012-07-03 3 views

답변

1

짧은 대답 : errno를 확인하십시오.

긴 대답 : __android_log_print가 음수 값을 반환 할 수있는 두 가지 이유가 있습니다. 첫 번째는 기록 할 로그 파일 (/ dev/log/main,/dev/log/radio 또는/dev/log/events)을 열 수없는 경우입니다. 두 번째는 write() 시스템 호출이 음수를 반환하는 경우입니다.

__android_log_print가 음수 값을 반환하면 errno가 설정됩니까? 그렇다면 그 가치는 무엇이 잘못되었는지에 대한 정보를 제공해야합니다. errno가 0이면 로그 호출이 __write_to_log_null에서 끝났을 가능성이 높으므로 프로그램에서 해당/dev/log 파일을 열 수 있는지 조사해야합니다.

errno가 설정되면 로그 파일을 열 때 설정되었을 수 있습니다. errno = 0으로 설정 한 다음 잘못된 log_id (첫 번째 인수)로 __android_log_bug_write를 호출하여이 사례를 격리 할 수 ​​있어야합니다. 이 기능을 유용하게 사용하려면 로깅 기능 중 첫 번째 호출이되어야합니다. 그렇지 않으면 파일 열기 단계가 끝났을 것입니다. 분명히 이것은 errno가 쓰기 타임이나 오픈 타임에있을 수있는 것으로 설정된 경우에만 필요합니다.

이 답변은 system/core/liblog/logd_write.c의 호의에 따라 제공됩니다.