Android GDB 사용시 브레이크 문제
현재 Android 에서 GDB 사용하면서 Stagefright을 분석하는 중입니다.
현재 문제가 GDB상에서
(gdb) info b
Num Type Disp Enb Address What
2 breakpoint keep y 0xa90398f2 in android::MediaPlayer::setVideoSurface(android::sp const&)
at frameworks/base/media/libmedia/mediaplayer.cpp:222
breakpoint already hit 4 times
3 breakpoint keep y 0xa2f4ae94 in android::AwesomePlayer::initRenderer_l() at frameworks/base/media/libstagefright/AwesomePlayer.cpp:1021
브레이크 포인트가 2,3 번이 있는데 2번은 잡히는데 3번이 잡히지 않습니다.
해당 브레이크가 잘 잡혔나 cat/pid/maps로 봐도
a2f00000-a306b000 r-xp 00000000 b3:05 632 /system/lib/libstiagefright.so
a306b000-a3076000 rw-p 0016b000 b3:05 632 /system/lib/libstagefright.so
a9000000-a9058000 r-xp 00000000 b3:05 574 /system/lib/libmedia.so
a9058000-a9068000 rw-p 00058000 b3:05 574 /system/lib/libmedia.so
libmedia.so에 있는 것과 libstagefright.so 에 있는 것이 크게 틀리지 않게 잘 올라간 것 같은데요..
해당 포인트는 로그 상으로도 꼭 타야되는 부분이라 브레이크가 잡혀야 할 것 같은데 잡히지 않습니다.
제가 다른 부분을 봐야 하는 포인트라도 있다면 언급해주시면 많은 도움이 될 것 같습니다.
감사합니다.
좀더 해보니 이런 부분도 보이는데 먼가 설정이 잘못된게 아닌지..
기존 break잡히는 곳에서
step으로 계속 들어가봤습니다..
(gdb)
android::MediaPlayer::setVideoSurface (this=0x2e8618, surface=...)
at frameworks/base/media/libmedia/mediaplayer.cpp:223
223 if (surface != NULL)
(gdb) s
224 return mPlayer->setVideoSurface(surface->getISurface());
(gdb)
warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)
Program received signal SIGSEGV, Segmentation fault.
결국 죽어버리는데요..
이것 때문에 위에 잡히지 않는 현상이 나오는지..
답답하네요..ㅠ.ㅠ
전 3번만 잡히네요
전 진저브레이드인데 3번만 잡히네요...
(갤러리로 mp4, avi 재생했습니다)
error는 잡았는데...
저같은 경우는 prebuilt된 gdb로 잡을 경우 위의 error가 발생하나
codesourcery의 최신 toolchain으로 사용할 시
arm-2011.03/bin/arm-none-linux-gnueabi-gdb
<- 이넘인데~~
잘 넘어갑니다.
여전히 AwesomePlayer는 break가 잡히진 않네요..
댓글 달기