Android Binder Transaction Logging

1. 목적
- 부팅이 완료될 때까지 Android Binder Transaction 전체 로깅을 남기자

2. 방법
- /proc/binder/transaction_log 을 읽으면 최근 32개의 Transaction 로그 출력

전체 로깅을 프로세스명까지 남기기 위해서 Emulator 커널의 binder 소스 수정
drivers/staging/android/binder.c 수정
- 위 파일의 소스 일부 수정
1402     //if (binder_debug_mask & BINDER_DEBUG_TRANSACTION) {
1403         if (reply)
1404             printk(KERN_INFO "binder: %d(%s):%d BC_REPLY %d -> %d(%s):%d, "
1405                    "data %p-%p size %zd-%zd\n",
1406                    proc->pid, proc->tsk->comm, thread->pid, t->debug_id,
1407                    target_proc->pid, target_proc->tsk->comm, target_thread->pid,
1408                    tr->data.ptr.buffer, tr->data.ptr.offsets,
1409                    tr->data_size, tr->offsets_size);
1410         else
1411             printk(KERN_INFO "binder: %d(%s):%d BC_TRANSACTION %d -> "
1412                    "%d(%s) - node %d, data %p-%p size %zd-%zd\n",
1413                    proc->pid, proc->tsk->comm, thread->pid, t->debug_id,
1414                    target_proc->pid, target_proc->tsk->comm, target_node->debug_id,
1415                    tr->data.ptr.buffer, tr->data.ptr.offsets,
1416                    tr->data_size, tr->offsets_size);
1417     //}

3. 결과
- 전체 로그는 첨부파일 참조
전체 대략 3857개의 Transaction이 요청됨
- 전체 Transaction debug ID는 8600 정도
각 프로세스 별 Transaction을 분석 필요



댓글

이 블로그의 인기 게시물

SSH 연결 Delay 해결

[ELK] search guard를 이용한 보안 설정 (사용자 권한)

공공데이터(openapi) 사용법 (특정 정류소, 버스의 남은 좌석 확인 하기)