2014-09-27 14 views
9

Vấn đề là khi biểu tượng địa chỉ stacktrace được báo cáo bởi PLCrashReporter không trả lại khung hệ thống/thư viện thực tế. Dòng ứng dụng của tôi mặc dù hiển thị dòng vi phạm chính xác được ký hiệu.Atos không tượng trưng cho khung hệ thống/thư viện đúng cách

Một số cấu hình. Tôi có trên OSX 10.9.5 của tôi cài đặt Xcode 5.1.1 và Xcode 6.0.1.

Khi làm việc với Xcode 5.1.1 và kiểm tra nhật ký thiết bị, tôi có thể thấy các sự cố mặc dù không có biểu tượng nào có thể xảy ra trong báo cáo sự cố.

Sử dụng Xcode 6.0.1 làm rơi ứng dụng của tôi và kiểm tra nhật ký thiết bị Tôi có thể thấy báo cáo được biểu tượng chính xác.

Các trường hợp trong mọi trường hợp không trả lại đúng dòng hệ thống khung/thư viện của Apple. Nó chỉ trả về các garbages, các lớp không liên quan gì đến khung/thư viện tương ứng. Xem dưới đây để biết ví dụ.

Cụ thể những gì tôi làm để tượng trưng cho ngăn xếp ngăn xếp sự cố của tôi được báo cáo cho tôi bằng cách sử dụng trình PLCrashReporter và so sánh với báo cáo biểu tượng nhật ký thiết bị.

Đây là stacktrace báo cáo bằng cách sử dụng PLCrashReporter unsymbolicated:

0 libsystem_platform.dylib 0x000000019726ce5c 0x197268000 + 20060 
1 libsystem_c.dylib 0x00000001971253e0 0x197124000 + 5088 
2 MyNewPlugin 0x000000010003ac70 0x10002c000 + 60528 
3 UIKit 0x000000018d5f90b0 0x18d5b0000 + 299184 
4 UIKit 0x000000018d5f9044 0x18d5b0000 + 299076 
5 UIKit 0x000000018d5e2520 0x18d5b0000 + 206112 
6 UIKit 0x000000018d5f8a44 0x18d5b0000 + 297540 
7 UIKit 0x000000018d5f86d8 0x18d5b0000 + 296664 
8 UIKit 0x000000018d5f3370 0x18d5b0000 + 275312 
9 UIKit 0x000000018d5c4b50 0x18d5b0000 + 84816 
10 UIKit 0x000000018d5c2c40 0x18d5b0000 + 76864 
11 CoreFoundation 0x000000018a5bb7f4 0x18a4f0000 + 833524 
12 CoreFoundation 0x000000018a5bab50 0x18a4f0000 + 830288 
13 CoreFoundation 0x000000018a5b8de8 0x18a4f0000 + 822760 
14 CoreFoundation 0x000000018a4f9dd0 0x18a4f0000 + 40400 
15 GraphicsServices 0x00000001901e1c0c 0x1901d4000 + 56332 
16 UIKit 0x000000018d62afc4 0x18d5b0000 + 503748 
17 MyNewPlugin 0x0000000100041944 0x10002c000 + 88388 
18 libdyld.dylib 0x00000001970f7aa0 0x1970f4000 + 15008 

Đây là stacktrace trên từ PLCrashReported symbolicated sử dụng "xcrun Atos":

0 libsystem_platform.dylib _mh_execute_header (in MyNewPlugin) + 20060 
1 libsystem_c.dylib _mh_execute_header (in MyNewPlugin) + 5088 
2 MyNewPlugin -[SLKViewController causeBadAddress:] (in MyNewPlugin) (SLKViewController.m:175) + 60528  
3 UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 232 
4 UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 124 
5 UIKit +[SSNetworkInfo cellMACAddress] (in MyNewPlugin) (SSNetworkInfo.m:0)  
6 UIKit __copy_helper_block_234 (in MyNewPlugin) + 100 
7 UIKit -[RequestWorker logEventAsyncWithName:logLevel:andCompletionBlock:] (in MyNewPlugin) + 992 
8 UIKit -[ErrorResponse setData:] (in MyNewPlugin) + 56 
9 UIKit +[SSProcessInfo processStatus] (in MyNewPlugin) (SSProcessInfo.m:97)  
10 UIKit +[JSONModel(Networking) postModel:toURLWithString:completion:] (in MyNewPlugin) (JSONModel+networking.m:107)  
11 CoreFoundation __55+[SPLJSONKeyMapper mapperFromUnderscoreCaseToCamelCase]_block_invoke_2 (in MyNewPlugin) + 1132 
12 CoreFoundation __destroy_helper_block_17 (in MyNewPlugin) + 44 
13 CoreFoundation -[RequestWorker sendUnhandledRequestAsync:andResultBlock:] (in MyNewPlugin) + 240 
14 CoreFoundation +[SSApplicationInfo clipboardContent] (in MyNewPlugin) (SSApplicationInfo.m:49) 
15 GraphicsServices __47-[SLKViewController logExceptionSynchronously:]_block_invoke (in MyNewPlugin) (SLKViewController.m:92) + 56332 
16 UIKit -[DeviceInfo appendInfo] (in MyNewPlugin) + 1192  
17 MyNewPlugin main (in MyNewPlugin) (main.m:16) + 88388 
18 libdyld.dylib _mh_execute_header (in MyNewPlugin) + 15008 

Đây là stacktrace cùng trên lỗi chính xác từ nhật ký thiết bị được biểu thị:

0 libsystem_platform.dylib  0x000000019726ce5c _platform_memmove + 188 
1 libsystem_c.dylib    0x00000001971253dc strcpy + 40 
2 MyNewPlugin      0x000000010003ac6c -[SLKViewController causeBadAddress:] (SLKViewController.m:174) 
3 UIKit       0x000000018d5f90ac -[UIApplication sendAction:to:from:forEvent:] + 96 
4 UIKit       0x000000018d5f9040 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 20 
5 UIKit       0x000000018d5e251c -[UIControl _sendActionsForEvents:withEvent:] + 372 
6 UIKit       0x000000018d5f8a40 -[UIControl touchesEnded:withEvent:] + 580 
7 UIKit       0x000000018d5f86d4 -[UIWindow _sendTouchesForEvent:] + 688 
8 UIKit       0x000000018d5f336c -[UIWindow sendEvent:] + 1168 
9 UIKit       0x000000018d5c4b4c -[UIApplication sendEvent:] + 252 
10 UIKit       0x000000018d5c2c3c _UIApplicationHandleEventQueue + 8496 
11 CoreFoundation     0x000000018a5bb7f0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 20 
12 CoreFoundation     0x000000018a5bab4c __CFRunLoopDoSources0 + 252 
13 CoreFoundation     0x000000018a5b8de4 __CFRunLoopRun + 628 
14 CoreFoundation     0x000000018a4f9dcc CFRunLoopRunSpecific + 448 
15 GraphicsServices    0x00000001901e1c08 GSEventRunModal + 164 
16 UIKit       0x000000018d62afc0 UIApplicationMain + 1152 
17 MyNewPlugin      0x0000000100041940 main (main.m:16) 
18 libdyld.dylib     0x00000001970f7a9c start + 0 

Bạn có thể thấy hai stacktraces tượng trưng, ​​đầu tiên từ stackrace PLCrashReporter và thứ hai từ nhật ký thiết bị Xcode. Tôi muốn trong thời điểm này để nói rằng tôi không tin rằng đó là địa chỉ có vấn đề nhưng nhiều hơn một cái gì đó đang xảy ra với atos. Xcode có sử dụng công cụ symbolicatecrash để tượng trưng cho báo cáo của Apple không?

Lệnh atos: xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x197268000 0x000000019726ce5c sẽ dẫn đến _mh_execute_header (in MyNewPlugin) + 20060 hoàn toàn sai và phải trả lại nội dung như báo cáo nhật ký thiết bị _platform_memmove + 188.

Một Atos ví dụ để chứng minh các vấn đề đối với dòng 3. xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x18d5b0000 0x000000018d5f90b0, nên trở về, UIKit 0x000000018d5f90ac -[UIApplication sendAction:to:from:forEvent:] + 96, thay vì trả về, UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 232 mà không có gì để làm với UIKit, đây là một lớp học nội tôi sử dụng.

Đây là cách tôi tạo các dòng của stacktrace bằng cách sử dụng PLCrashReporter.

[NSString stringWithFormat:@"%-4ld%@ 0x0000000%" PRIx64 " 0x%" PRIx64 " + %" PRId64 "", (long)frameIndex, imageName, frameInfo.instructionPointer, baseAddress, pcOffset]; 

EDIT: Sử dụng symbolicatecrash tại nhà ga cho báo cáo tai nạn táo unsymbolicated được symbolicating tất cả các cụm hệ thống nhưng không phải là dòng ứng dụng !!!

+0

Bạn đã bao giờ giải quyết vấn đề của mình chưa? – Locksleyu

+0

Không, thật không may là tôi không có, bản in chỉ là vô ích hoặc tôi bỏ lỡ thông tin về cách sử dụng mà tôi không thể tìm thấy ở bất cứ đâu! –

Trả lời

12

Câu trả lời rất đơn giản nhưng đôi khi bạn không nhìn thấy nó trước mặt bạn.

Thay vì sử dụng dSYM của ứng dụng, bạn sử dụng khung của phiên bản iOS mà thiết bị gặp phải khi gặp sự cố. ví dụ. cho các ký hiệu UIKit của iOS 8.1.1

xcrun atos -arch arm64 -o ~/Thư viện/Nhà phát triển/Xcode/iOS DeviceSupport/8.1.1 (12B436) /Symbols/System/Library/Frameworks/UIKit.framework/UIKit -l 0x18d5b0000 0x000000018d5f90b0

+0

Xin chào, @ george-taskos bạn có thể cung cấp một số hướng dẫn về cách biểu tượng một stacktrace thu được bằng cách sử dụng NSSetUncaughtExceptionHandler đây là [post] của tôi (http: // stackoverflow .com/questions/34664162/how-to-get-the-line-of-the-tai nạn-và-the-phương pháp-như-crashlytics-không-và-cũng-the) cảm ơn cho bất kỳ lời khuyên trước và bỏ phiếu lên cho bài đăng này –

1

tại đây ya go iOS crash reports: atos not working as expected cho các dòng ứng dụng tẻ nhạt, mặc dù phải đi từng dòng một.

+0

Tôi đã nhìn thấy câu trả lời này, đó là phương pháp tiếp cận đúng về mặt lý thuyết nhưng nó không hoạt động, trả về kết quả tương tự như nếu bạn đã sử dụng cờ -l đi qua hai địa chỉ của dòng stacktrace. Chỉ cần kiểm tra lại và nhận được cùng một kết quả sai cho hệ thống hoặc các thư viện/khung công tác khác. Cảm ơn câu trả lời. –

+0

tốt, có vẻ như bạn sẽ phải rót táo sau khi tất cả để có được điều này cố định, một lần nữa. và giữ cho các ngón tay vượt qua chúng không bỏ qua lỗi mới trong bugreporter.apple.com –

Các vấn đề liên quan