[英]How to debug Flutter iOS crash
我們從我們的 Flutter 應用程序的 Testflight 發行版中得到了一些崩潰。 我們很難確定問題究竟出在哪里,因為崩潰日志並沒有告訴我們太多。
這是日志(完整崩潰日志/ Xcode 屏幕截圖的要點):
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000003b3801090
VM Region Info: 0x3b3801090 is not in any region. Bytes after previous region: 4622127249
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
MALLOC_NANO 0000000280000000-00000002a0000000 [512.0M] rw-/rwx SM=PRV
--->
UNUSED SPACE AT END
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [4572]
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libobjc.A.dylib 0x000000018a902090 objc_msgSend + 16
1 Flutter 0x00000001009d6f4c -[SemanticsObject hasChildren] + 60 (accessibility_bridge.mm:160)
2 Flutter 0x00000001009d8334 -[SemanticsObject accessibilityContainer] + 36 (accessibility_bridge.mm:287)
3 UIAccessibility 0x0000000195f88898 -[NSObject(AXPrivCategory) _accessibilityParentView] + 84 (NSObjectAccessibility.m:7787)
4 UIAccessibility 0x0000000195f88734 -[NSObject(AXPrivCategory) _accessibilityWindow] + 92 (NSObjectAccessibility.m:7762)
5 UIAccessibility 0x0000000195f8ff68 -[NSObject(AXPrivCategory) _accessibilityConvertSystemBoundedScreenRectToContextSpace:] + 48 (NSObjectAccessibility.m:10192)
6 UIAccessibility 0x0000000195f83ee8 -[NSObject(AXPrivCategory) _iosAccessibilityAttributeValue:] + 4624 (NSObjectAccessibility.m:5303)
7 UIAccessibility 0x0000000195f6637c _copyMultipleAttributeValuesCallback + 540 (UIAccessibilityRuntime.m:345)
8 AXRuntime 0x0000000194fc56e0 ___AXXMIGCopyMultipleAttributeValues_block_invoke + 60 (AccessibilityPriv.m:1262)
9 AXRuntime 0x0000000194fc5264 _handleNonMainThreadCallback + 60 (AccessibilityPriv.m:466)
10 AXRuntime 0x0000000194fc5570 _AXXMIGCopyMultipleAttributeValues + 332 (AccessibilityPriv.m:1261)
11 AXRuntime 0x0000000194fbf4b4 _XCopyMultipleAttributeValues + 392 (AccessibilityClientDefsServer.c:1354)
12 AXRuntime 0x0000000194fd443c mshMIGPerform + 268 (MachServerHelper.c:447)
13 CoreFoundation 0x000000018ab5d07c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56 (CFRunLoop.c:1937)
14 CoreFoundation 0x000000018ab5c7a8 __CFRunLoopDoSource1 + 444 (CFRunLoop.c:2075)
15 CoreFoundation 0x000000018ab5767c __CFRunLoopRun + 2168 (CFRunLoop.c:3098)
16 CoreFoundation 0x000000018ab56adc CFRunLoopRunSpecific + 464 (CFRunLoop.c:3192)
17 GraphicsServices 0x0000000194adc328 GSEventRunModal + 104 (GSEvent.c:2246)
18 UIKitCore 0x000000018ec51ae0 UIApplicationMain + 1936 (UIApplication.m:4773)
19 Runner 0x0000000100666cec main + 96 (AppDelegate.swift:5)
20 libdyld.dylib 0x000000018a9e0360 start + 4
我們已經嘗試通過遵循本指南https://github.com/flutter/flutter/wiki/Crashes進一步象征化日志。 使用這些步驟:
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
cp -i /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ./
symbolicatecrash 2020-01-11.crash Flutter.dSYM > symbolicated.crash
但它並沒有真正改善,請參閱此要點中的更改
有關從何處開始查找導致此類崩潰的編程錯誤的任何提示。 我們正在尋找有關調試內部顫振崩潰的一般技巧和這種特殊情況的技巧。
此外,我們無法重現這次崩潰,因為我們不知道去哪里尋找。
根據您的崩潰報告VM Region Info: 0x3b3801090 is not in any region.
崩潰可能是因為正在訪問一些未分配的內存......這可能是因為___AXXMIGCopyMultipleAttributeValues_block_invoke
是從主線程外部調用的(看起來像根據堆棧跟蹤)。 但是不知道能不能調試lib AXRuntime。
您是否嘗試過在 xcode 中使用查看日志窗口來表示崩潰報告? (你必須有一個物理的 iphone X (iphone10),所以架構不會在過程中丟失......這個頁面可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.