arm-linux-androideabi-addr2line 도구를 사용하여 libunity.so 충돌 문제를 찾습니다.

arm-linux-androideabi-addr2line 설명:

arm-linux-androideabi-addr2lineNDK와 함께 제공되는 디버깅 도구이며 충돌 시 메모리 주소 출력을 분석하는 데 사용할 수 있습니다.

사용하는 방법:

먼저 도구의 경로를 찾아 arm-linux-androideabi-addr2linecmd를 통해 해당 폴더에 들어가시면 되는데, 저처럼 안드로이드 개발에 대한 경험이나 개념이 전혀 없는 초보자라면 이 파일을 찾다보니 여러 버전의 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.0023293dso 라이브러리 파일은 libunity.so를 사용해야 합니다. 편의상 이 파일을 F 드라이브에 복사했습니다.

실행해야 하는 명령어와 결과는 다음과 같다. 메소드 호출 후 해당 메소드가 호출 되다가 크래시되는
여기에 이미지 설명을 삽입하세요.
것을 볼 수 있다 .UnitySendMessageJNI_OnUnload

추천

출처blog.csdn.net/EverNess010/article/details/107612346