arm-linux-androideabi-addr2line 설명:
arm-linux-androideabi-addr2line
NDK와 함께 제공되는 디버깅 도구이며 충돌 시 메모리 주소 출력을 분석하는 데 사용할 수 있습니다.
사용하는 방법:
먼저 도구의 경로를 찾아 arm-linux-androideabi-addr2line
cmd를 통해 해당 폴더에 들어가시면 되는데, 저처럼 안드로이드 개발에 대한 경험이나 개념이 전혀 없는 초보자라면 이 파일을 찾다보니 여러 버전의 ndk를 설치했습니다. 걱정하지 말고 하나만 찾으세요. 그런 다음 검색창에서 도구 이름을 직접 검색하세요.
여기서 검색할 ndk-r13b 폴더를 입력한
후, cmd를 통해 이 경로를 입력했습니다.
실행 명령:
arm-linux-androideabi-addr2line -C -f -e so库文件的路径 具体的内存地址
예를 들어 분석해야 할 충돌 정보는 다음과 같습니다.
Caused by: java.lang.Error: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004
Build fingerprint: 'xxxxx 测试信息'
Revision: '0'
pid: 21666, tid: 21847, name: UnityMain >>> xxx 游戏包名 <<<
r0 980ae958 r1 00000004 r2 00430000 r3 b11dc6dd
r4 980ae958 r5 980ae958 r6 ffffffff r7 980afe78
r8 00000000 r9 a4b2ce00 sl 00000001 fp 980ae948
ip 002e3688 sp 980ae938 lr 9738a941 pc 978460f8 cpsr 86371100
at libunity.006ee0f8(Native Method)
at libunity.0023293d(Native Method)
at Unknown.fffffffd(Unknown Source:0)
libunity.006ee0f8
여기에는 두 가지 문제가 표시되므로 libunity.0023293d
so 라이브러리 파일은 libunity.so를 사용해야 합니다. 편의상 이 파일을 F 드라이브에 복사했습니다.
실행해야 하는 명령어와 결과는 다음과 같다. 메소드 호출 후 해당 메소드가 호출 되다가 크래시되는
것을 볼 수 있다 .UnitySendMessage
JNI_OnUnload