도와주세요!!
글 수 15,339
2011.06.16 18:59:02 (*.50.21.24)
27802
구글링 등을 해서 Android GDB로 붙이는데 성공했습니다 ~
문제는 일반 application은 app_prossess 를 붙이는 데 반해 제가 멀티미디어를 하다 보니 mediaserver를 붙여서 디버깅하고 싶습니다.
타겟
gdbserver :3000 --attach pid(mediaserver pid)
호스트
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
out/target/product/모델이름/symbols/system/bin/mediaserver
이후 target remote:3000
문제는
일반 app_process는 정상적으로 브레이크가 잘 잡히는데 반해
mediaserver는 넘어갈 생각을 하지 않습니다.
(gdb) cont
Continuing.
이 화면에서 계속 멈춰있습니다.
그래서 Ctrl+C로 잠시 멈추고 bt를 하면
#0 __ioctl () at bionic/libc/arch-arm/syscalls/__ioctl.S:15
#1 0xafd2611c in ioctl (fd=<value optimized out>, request=8)
at bionic/libc/bionic/ioctl.c:41
#2 0xa8215fa4 in android::IPCThreadState::talkWithDriver (this=0xf3a0,
doReceive=true) at frameworks/base/libs/binder/IPCThreadState.cpp:791
#3 0xa8216984 in android::IPCThreadState::joinThreadPool (this=0xf3a0,
isMain=true) at frameworks/base/libs/binder/IPCThreadState.cpp:446
#4 0x00008a1e in main (argc=<value optimized out>, argv=<value optimized out>)
at frameworks/base/media/mediaserver/main_mediaserver.cpp:46
계속 ioctrl에서 멈춰있는 것 같습니다.
Driver와 연동에서 문제가 있는 것인지 상당히 난해하네요..
혹시 비슷한 경험 있으신 분은 힌트라도 부탁 드립니다.
overlay등 정보를 찍어보려면 mediaserver로 디버깅해야 할 것 같습니다.
감사합니다.