dsym 파일이없는 iOS 오류 보고서를 나타냅니다. 나는 좋은 file_name을 얻을 수 없을 것이라는 것을 안다 : 줄 번호 symbolication 그러나 코드의 어셈블리 부분에서 어디에서 충돌이 발생했는지 알아내는 것이 좋다. 내가 바이너리 해독 및 충돌 보고서와 진 경기에서 UUID의의를 확인했습니다dsym이없는 iOS 충돌 보고서 기호 - 기호 주소가 바이너리에 표시된 주소 외부입니다.
Thread 3 name: Dispatch queue: com.unity3d.WebOperationQueue :: NSOperation 0x1483250e0 (QOS: USER_INTERACTIVE)
Thread 3 Crashed:
0 myapp 0x0000000100ec4738 0x100080000 + 14960440
1 myapp 0x000000010120e0fc 0x100080000 + 18407676
2 myapp 0x00000001011d7e00 0x100080000 + 18185728
3 myapp 0x0000000100085cfc 0x100080000 + 23804
4 CFNetwork 0x0000000185027780 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 80
...
: 시작하기
, 여기에 추락 스레드의 스택 추적입니다. 수동으로 스택 주소를 symbolicate하기 위해,이
atos -arch arm64 -o myapp -l 0x100080000 0x0000000100ec4738
을하고 나는 내가 dsym 파일이 없기 때문에이 부분적으로 예상된다
0x0000000100e44738 (in myapp) + 544
으로 위의 명령의 출력을 얻을. 우리가 계산하는 경우
는0x0000000100e44738
도 얻을 수 있습니다
symbol address as = (slide + stack - load address)
슬라이드 ATOS 반환 주소 위와 그래서 0x0000000100000000 + 0x0000000100ec4738 - 0x100080000 = 0x100e44738
같은 0x0000000100000000
(otool -arch arm64 -l myapp | grep -B 3 -A 8 -m 2 "__TEXT"
에서 vmaddr로 발견)
입니다.
이제 문제는 내가 otool 명령 위의 명령의 시작은 다음과 같습니다otool -tvV myapp
아래 사용 얻으 바이너리의 텍스트 섹션에서 주소에서 0x100e44738
기호 주소를 찾을 수 없습니다입니다.
myapp:
(__TEXT,__text) section
__ZNK5physx14NpSceneQueries10multiQueryINS_12PxRaycastHitEEEbRKNS_15MultiQueryInputERNS_13PxHitCallbackIT_EENS_7PxFlagsINS_9PxHitFlag4EnumEtEEPKNS_12PxQueryCacheERKNS_17PxQueryFilterDataEPNS_21PxQueryFilterCallbackEPNS_20BatchQueryFilterDataE:
0000000101262f40 stp x28, x27, [sp, #-96]!
0000000101262f44 stp x26, x25, [sp, #16]
0000000101262f48 stp x24, x23, [sp, #32]
0000000101262f4c stp x22, x21, [sp, #48]
0000000101262f50 stp x20, x19, [sp, #64]
0000000101262f54 stp x29, x30, [sp, #80]
...
우리는 명확하게 otool -tvV (0x101262f40)
에서 시작 주소가 symbol address (0x100e44738)
보다 큰 볼 수 있습니다. 그래서 내가 놓친 것을 발견 할 수 없거나 여기에서 어떻게 나아갈 지 알 수 없다.
이 스택 추적은 SIGSEGV 예외를위한 것이므로 변경 사항이 있는지 확실하지 않습니다. SIGABRT 예외가있는 다른 샘플 응용 프로그램에서 수동 기호화의 정확한 단계를 시도했지만 어셈블리에서 정확한 줄을 알 수있었습니다.
모든 도움말이나 의견을 보내 주시면 감사하겠습니다.
감사합니다. NSURLConnection의 콜백이 문제를 일으키는 것 같습니다. 델리게이트가 dealloc 할 때 이미 NSURLConnection 객체를 nil로 설정했습니다. 물론 NSURLConnection의 대리자를 nil에 설정하지 않으려는 것이지만 위임 속성이 없으므로 그렇게 할 수 없습니다. – Ravi