GDB를 사용하여 Android에서 애플리케이션을 디버깅하고 싶습니다. gdb 및 프로세스 번호로 연결할 수 있지만 처음부터 무엇을하는지 알고 싶습니다.Android에서 GDB로 달빅 실행 파일을 실행하는 방법은 무엇입니까?
그렇게 할 방법이 있습니까?
GDB를 사용하여 Android에서 애플리케이션을 디버깅하고 싶습니다. gdb 및 프로세스 번호로 연결할 수 있지만 처음부터 무엇을하는지 알고 싶습니다.Android에서 GDB로 달빅 실행 파일을 실행하는 방법은 무엇입니까?
그렇게 할 방법이 있습니까?
루팅 된 장치 또는 에뮬레이터에서 gdb를 zygote에 연결하고 새로 fork 된 프로세스가 시작될 응용 프로그램의 ID를 가정 할 때 바로 중단 점을 지정할 수 있습니다.
zygote를 수정하여 디버거가 연결될 때까지 기다리는 것이 가장 쉽습니다. Jdwp 디버깅 시스템에는 Java 코드 작성기 초기에 Java 디버거를 넣을 수있는 코드가 있지만, 이미 내장 된 gdb에 필적 할만한 기능이 없다는 것을 알고 있습니다. 기다릴 수는 있지만 jdwp의 경우, 그리고 자바 디버거를 연결 (및 분리)하기 전에 gdb를 첨부하십시오.
업데이트 : gdb로 zygote에 연결하고 초기에 자식에 의해 실행되는 코드 한 단어를 수정하여 무한 루프로 이동 한 다음 zygote에서 분리합니다. 나는 'ps'에 나타나 자마자 새로운 자식을 gdb로 만들고 계속해서 복구 할 수 있다고 생각했습니다. 문제는 입력 된 모든 명령을 얻을 수있는 것보다 아이가 더 빨리 죽었다는 것입니다 (아마도 반응이 없음). 그래서 그것은 프로그램에 의해 완료되어야 할 것입니다. 그리고 일찍 멈추지 않고 죽임을당하는 일이 그리 많지 않을 수도 있습니다. 아마도 거기에 strace를 넣을 수는 있지만, 소스를 읽지 못한다는 것을 배우기를 희망합니까?
OMAPpedia의 Android Debugging 페이지에는 gdbclient 사용에 대한 개요가 있습니다.
gdbclient <executable name> <port number> <task name>
당신은 adb
처음으로 앞으로 포트 설정과 같이해야합니다 :
adb forward tcp:5039 tcp:5039