保存屏幕截图时 Xcode 8.2 模拟器崩溃
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41125363/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Xcode 8.2 simulator crash when save screen shot
提问by Tericky Shih
After update XCode 8.2, every time save simulator screen shot always made it crash. Even I reset content and settings still crash.
更新 XCode 8.2 后,每次保存模拟器屏幕截图总是使其崩溃。即使我重置内容和设置仍然崩溃。
Should I remove all simulator and install them again?
我应该删除所有模拟器并重新安装它们吗?
Update:
更新:
- 8.2.1 has same problem.
- 8.3 only Sierra supported.
- 8.2.1 也有同样的问题。
- 8.3 仅支持 Sierra。
The following is the crash report:
以下是崩溃报告:
Process: Simulator [48928]
Path: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
Identifier: com.apple.iphonesimulator
Version: 10.0 (726.7)
Build Info: Indigo-726007000000000~5
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Simulator [48928]
User ID: 501
PlugIn Path: /Applications/Xcode.app/Contents/Frameworks/libswiftFoundation.dylib
PlugIn Identifier: libswiftFoundation.dylib
PlugIn Version: 3.0.2 (800.0.63)
Date/Time: 2016-12-13 23:43:25.860 +0800
OS Version: Mac OS X 10.11.6 (15G1108)
Report Version: 11
Anonymous UUID: 6E8AEBAE-0AF8-D350-66D6-57EC500D69F5
Sleep/Wake UUID: 6E017B49-1A38-4D3A-AB8F-FD9E200B6286
Time Awake Since Boot: 110000 seconds
Time Since Wake: 10000 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: EXC_I386_GPFLT
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
Performing @selector(saveScreenShot:) from sender NSMenuItem 0x7fd05a7329f0
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff946adcdc lookUpImpOrForward + 135
1 libobjc.A.dylib 0x00007fff946a8591 objc_msgSend + 209
2 libsystem_blocks.dylib 0x00007fff9b684986 _Block_object_assign + 364
3 com.apple.Foundation 0x00007fff8dc21ca4 __copy_helper_block_ + 49
4 libsystem_blocks.dylib 0x00007fff9b68459d _Block_copy_internal + 325
5 libswiftFoundation.dylib 0x000000010178af95 _TToFC10Foundation12_SwiftNSData19enumerateByteRangesfT5usingFTSVVSC8_NSRangeGSpV10ObjectiveC8ObjCBool__T__T_ + 21
6 com.apple.Foundation 0x00007fff8db02a94 _NSWriteDataToFileWithExtendedAttributes + 742
7 com.apple.iphonesimulator 0x0000000100ffdc1e 0x100ff1000 + 52254
8 com.apple.iphonesimulator 0x0000000100ffdda9 0x100ff1000 + 52649
9 libsystem_trace.dylib 0x00007fff9a5bd07a _os_activity_initiate + 75
10 com.apple.AppKit 0x00007fff909d4dbd -[NSApplication sendAction:to:from:] + 460
11 com.apple.AppKit 0x00007fff909d4b57 -[NSMenuItem _corePerformAction] + 336
12 com.apple.AppKit 0x00007fff909d48b7 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 114
13 libsystem_trace.dylib 0x00007fff9a5bd07a _os_activity_initiate + 75
14 com.apple.AppKit 0x00007fff909d37a5 -[NSMenu performKeyEquivalent:] + 357
15 com.apple.AppKit 0x00007fff909d2949 -[NSApplication _handleKeyEquivalent:] + 920
16 com.apple.AppKit 0x00007fff908f90fe -[NSApplication sendEvent:] + 4274
17 com.apple.iphonesimulator 0x000000010100d151 0x100ff1000 + 115025
18 com.apple.AppKit 0x00007fff9075fdf2 -[NSApplication run] + 796
19 com.apple.AppKit 0x00007fff90729368 NSApplicationMain + 1176
20 libdyld.dylib 0x00007fff99c955ad start + 1
Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0 libsystem_kernel.dylib 0x00007fff97827efa kevent_qos + 10
1 libdispatch.dylib 0x00007fff9612d165 _dispatch_mgr_invoke + 216
2 libdispatch.dylib 0x00007fff9612cdcd _dispatch_mgr_thread + 52
Thread 2:: com.apple.NSEventThread
0 libsystem_kernel.dylib 0x00007fff97820f72 mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff978203b3 mach_msg + 55
2 com.apple.CoreFoundation 0x00007fff97319124 __CFRunLoopServiceMachPort + 212
3 com.apple.CoreFoundation 0x00007fff973185ec __CFRunLoopRun + 1356
4 com.apple.CoreFoundation 0x00007fff97317e38 CFRunLoopRunSpecific + 296
5 com.apple.AppKit 0x00007fff908c1d95 _NSEventThread + 149
6 libsystem_pthread.dylib 0x00007fff928a299d _pthread_body + 131
7 libsystem_pthread.dylib 0x00007fff928a291a _pthread_start + 168
8 libsystem_pthread.dylib 0x00007fff928a0351 thread_start + 13
Thread 3:
0 libsystem_kernel.dylib 0x00007fff978275e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff928a2578 _pthread_wqthread + 1283
2 libsystem_pthread.dylib 0x00007fff928a0341 start_wqthread + 13
Thread 4:
0 libsystem_kernel.dylib 0x00007fff978275e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff928a2578 _pthread_wqthread + 1283
2 libsystem_pthread.dylib 0x00007fff928a0341 start_wqthread + 13
Thread 5:
0 libsystem_kernel.dylib 0x00007fff978275e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff928a2578 _pthread_wqthread + 1283
2 libsystem_pthread.dylib 0x00007fff928a0341 start_wqthread + 13
Thread 6:
0 libsystem_kernel.dylib 0x00007fff978275e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff928a2578 _pthread_wqthread + 1283
2 libsystem_pthread.dylib 0x00007fff928a0341 start_wqthread + 13
Thread 7:
0 libsystem_kernel.dylib 0x00007fff978275e2 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff928a2578 _pthread_wqthread + 1283
2 libsystem_pthread.dylib 0x00007fff928a0341 start_wqthread + 13
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x00007fff6382b2c0 rbx: 0x00007fff6384ce48 rcx: 0x021b77058d48fb89 rdx: 0x00007fff638545f8
rdi: 0x00007fff6384ce48 rsi: 0x00007fff976efa45 rbp: 0x00007fff5ec0dc30 rsp: 0x00007fff5ec0dbe0
r8: 0x0000000000000000 r9: 0x0000000000000001 r10: 0x00007fff93c7d1e0 r11: 0x00007fff6384ce48
r12: 0x00007fff976efa45 r13: 0x0000000000000000 r14: 0x0000000000000001 r15: 0x00007ffffffffff8
rip: 0x00007fff946adcdc rfl: 0x0000000000010206 cr2: 0x00007fff93c7c000
回答by xoudini
The crash seems to occur due to a segmentation fault, or more specifically a general protection fault, while calling the saveScreenShot:
selector. Why it happens can depend on several things, so it's hard to say whether a reinstall would help.
崩溃似乎是由于分段错误,或更具体地说,是在调用saveScreenShot:
选择器时发生的一般保护错误。为什么会发生这种情况取决于几件事,因此很难说重新安装是否会有所帮助。
In any case, if the screenshot (?S) function in simulator causes the crash, there's hardly anything you can do about it. The best option you have is probably to file a bug report to Apple.
在任何情况下,如果模拟器中的屏幕截图 (?S) 函数导致崩溃,您几乎无能为力。您拥有的最佳选择可能是向 Apple 提交错误报告。
Update:
更新:
I just updated to the 8.2 GM, and low and behold, ?S crashes for me as well. Although I'm getting KERN_INVALID_ADDRESS
instead of EXC_I386_GPFLT
.
我刚刚更新到 8.2 GM,瞧瞧,?S 对我来说也崩溃了。虽然我得到了KERN_INVALID_ADDRESS
而不是EXC_I386_GPFLT
.
One workaround, for the time being, is copying the screen and pasting into Preview:
目前,一种解决方法是复制屏幕并粘贴到预览中:
回答by Jeremy Huddleston Sequoia
Yeah, unfortunately, this is tripping over a bug in Foundation on OS X 10.11. You won't have the problem if you upgrade to macOS Sierra.
是的,不幸的是,这被 OS X 10.11 上的 Foundation 中的一个错误绊倒了。如果您升级到 macOS Sierra,您将不会遇到此问题。
If you cannot upgrade to Sierra right now, you can still take screenshots from the commandline:
如果您现在无法升级到 Sierra,您仍然可以从命令行截取屏幕截图:
xcrun simctl io booted screenshot <path to output file>
This is mentioned in the Xcode 8.2 Release Notes
这在Xcode 8.2 发行说明中提到
Simulator can crash when saving a screenshot when running on OS X El Capitan. (29182710) The crash does not occur on macOS Sierra.
在 OS X El Capitan 上运行时,保存屏幕截图时模拟器可能会崩溃。(29182710) 在 macOS Sierra 上不会发生崩溃。
回答by Ramkrishna Sharma
Please find the below steps for getting the screenshot.
请按照以下步骤获取屏幕截图。
1) Go to Simulators -> Edit -> Copy Screen or you can use the shortcut (ctrl + cmd + c).
2) Open the Previewand go to File -> New from Clipboard or you can use the shortcut (cmd + n).
3) Now go to File -> Save or you can use the shortcut (cmd + s).
1) 转到模拟器 -> 编辑 -> 复制屏幕,或者您可以使用快捷方式 ( ctrl + cmd + c)。
2)打开预览并转到文件 - >从剪贴板新建,或者您可以使用快捷方式(cmd + n)。
3)现在转到文件 - >保存,或者您可以使用快捷方式(cmd + s)。
Or you can also refer the below GIF presentation.
或者您也可以参考下面的 GIF 演示文稿。
回答by Salil Junior
So an easier workaround is this:
所以一个更简单的解决方法是:
Run app in simulator (obviously)
In simulator go to Edit>Copy Screen
- Open Preview app
- Go back to simulator and save screenshot i.e. File>Save Screenshot
在模拟器中运行应用程序(显然)
在模拟器中去编辑>复制屏幕
- 打开预览应用
- 返回模拟器并保存屏幕截图,即文件>保存屏幕截图
Done!
完毕!
Not sure why this prevents the bug from occurring but it worked for me. It's faster than all the other methods described above.
不知道为什么这可以防止错误发生,但它对我有用。它比上述所有其他方法都快。
回答by MilanPanchal
Solution 1
方案一
1) Go to Simulators > Edit > Copy Screen (??C)
1)转到模拟器>编辑>复制屏幕(??C)
2) Open Preview App > Go to File > New from Clipboard (?N) and Save (?S) to your favorite location on your machine
2)打开预览应用程序>转到文件>从剪贴板新建(?N)并保存(?S)到您机器上您最喜欢的位置
Solution 2:- Using the xcrun Xcode command-line utility
解决方案 2:- 使用 xcrun Xcode 命令行实用程序
Open Terminal App
and run the following command to take screenshot
打开Terminal App
并运行以下命令进行截图
xcrun simctl io booted screenshot
xcrun simctl io booted screenshot
If you wish to save the captured screenshot to specific location
如果您希望将捕获的屏幕截图保存到特定位置
xcrun simctl io booted screenshot <path_to_output_file>
xcrun simctl io booted screenshot <path_to_output_file>
回答by benc
Another convenient way -> Shift+Command+4 - tap the space bar, tap on the window to get snapshot of the Simulator's window.
另一种方便的方法 -> Shift+Command+4 - 点击空格键,点击窗口以获取模拟器窗口的快照。