안드로이드 플랫폼 엔지니어의 일상에서 가장 짜릿하면서도 고통스러운 순간을 꼽으라면, 내가 직접 구현한 커스텀 HAL 바이너리를 타깃 보드에 포팅하고 첫 부팅을 시도하는 순간일 것입니다. 하지만 안타깝게도 하드웨어는 단 한 번에 상위 프레임워크와 매끄럽게 연결되는 법이 없습니다. 부팅 직후 상위 자바 앱 레이어에서 하드웨어 호출 API를 눌렀을 때 아무런 반응이 없거나 시스템 서버가 통째로 얼어붙는 현상은 개발 초기 단계의 통과의례와도 같은데요.이때 "코드가 잘못되었나?"라며 무작정 소스코드만 쳐다보는 것은 시간낭비입니다. 안드로이드는 시스템 레이어와 커널 영역 전반에 걸쳐 하드웨어가 왜 죽었는지, 어디서 권한이 막혔는지 명확한 흔적을 로그로 남겨두기 때문입니다. 이번 포스팅에서는 유저 스페이스 영역의 l..