我正在尝试使用swift开发一个使用SpriteKit的游戏。 游戏随机抛出此错误,应用程序崩溃。由于我是游戏开发的新手,我不知道究竟是哪个代码导致了崩溃。
错误:
EXC_BAD_ACCESS(code = EXC_l386_GPFLT)
这是主题1 UIApplicationMain
0x10e899d86 <+837>: movq %rbx, %rdx
0x10e899d89 <+840>: movq %rax, %rcx
0x10e899d8c <+843>: movl $0x990, %r8d
0x10e899d92 <+849>: xorb %al, %al
0x10e899d94 <+851>: callq *%r12
0x10e899d97 <+854>: movq 0xb59bba(%rip), %rsi ; "class"
0x10e899d9e <+861>: movq 0xb7f57b(%rip), %rdi ; (void *)0x000000010f41df18: UIApplication
0x10e899da5 <+868>: callq *%r12
0x10e899da8 <+871>: movq 0xb5aa89(%rip), %rsi ; "isSubclassOfClass:"
0x10e899daf <+878>: movq %r14, %rdi
0x10e899db2 <+881>: movq %rax, %rdx
0x10e899db5 <+884>: callq *%r12
0x10e899db8 <+887>: movq 0xbecb39(%rip), %rbx ; UIApp
0x10e899dbf <+894>: testb %al, %al
0x10e899dc1 <+896>: je 0x10e899dd8 ; <+919>
0x10e899dc3 <+898>: movq 0xb59c86(%rip), %rsi ; "setDelegate:"
0x10e899dca <+905>: movq %rbx, %rdi
0x10e899dcd <+908>: movq %rbx, %rdx
0x10e899dd0 <+911>: callq *0x9b10e2(%rip) ; (void *)0x000000010ddc7fc0: objc_msgSend
0x10e899dd6 <+917>: jmp 0x10e899e14 ; <+979>
0x10e899dd8 <+919>: movq 0xb59bd9(%rip), %rsi ; "alloc"
0x10e899ddf <+926>: movq %r14, %rdi
0x10e899de2 <+929>: callq *%r12
0x10e899de5 <+932>: movq 0xb59dd4(%rip), %rsi ; "init"
0x10e899dec <+939>: movq %rax, %rdi
0x10e899def <+942>: callq *%r12
0x10e899df2 <+945>: movq 0xb59e8f(%rip), %rsi ; "autorelease"
0x10e899df9 <+952>: movq %rax, %rdi
0x10e899dfc <+955>: callq *%r12
0x10e899dff <+958>: movq 0xb5aa3a(%rip), %rsi ; "_setDelegate:assumeOwnership:"
0x10e899e06 <+965>: movq %rbx, %rdi
0x10e899e09 <+968>: movq %rax, %rdx
0x10e899e0c <+971>: movl $0x1, %ecx
0x10e899e11 <+976>: callq *%r12
0x10e899e14 <+979>: movq 0xb59a95(%rip), %rsi ; "release"
0x10e899e1b <+986>: movq -0x30(%rbp), %rdi
0x10e899e1f <+990>: callq *%r12
0x10e899e22 <+993>: movq 0xb5aa1f(%rip), %rsi ; "_run"
0x10e899e29 <+1000>: movq 0xbecac8(%rip), %rdi ; UIApp
0x10e899e30 <+1007>: callq *%r12
-> 0x10e899e33 <+1010>: xorl %eax, %eax // ERROR LINE HERE
0x10e899e35 <+1012>: addq $0x28, %rsp
0x10e899e39 <+1016>: popq %rbx
0x10e899e3a <+1017>: popq %r12
0x10e899e3c <+1019>: popq %r13
0x10e899e3e <+1021>: popq %r14
0x10e899e40 <+1023>: popq %r15
0x10e899e42 <+1025>: popq %rbp
0x10e899e43 <+1026>: retq
这是0 objc_msgSend
libobjc.A.dylib`objc_msgSend:
0x10ddc7fc0 <+0>: testq %rdi, %rdi
0x10ddc7fc3 <+3>: jle 0x10ddc8028 ; <+104>
0x10ddc7fc5 <+5>: movq (%rdi), %r11
0x10ddc7fc8 <+8>: movq %rsi, %r10
-> 0x10ddc7fcb <+11>: andl 0x18(%r11), %r10d
0x10ddc7fcf <+15>: shlq $0x4, %r10
0x10ddc7fd3 <+19>: addq 0x10(%r11), %r10
0x10ddc7fd7 <+23>: cmpq (%r10), %rsi
0x10ddc7fda <+26>: jne 0x10ddc7fe0 ; <+32>
0x10ddc7fdc <+28>: jmpq *0x8(%r10)
0x10ddc7fe0 <+32>: cmpq $0x0, (%r10)
0x10ddc7fe4 <+36>: je 0x10ddc8049 ; <+137>
0x10ddc7fe6 <+38>: cmpq 0x10(%r11), %r10
0x10ddc7fea <+42>: je 0x10ddc7ff9 ; <+57>
0x10ddc7fec <+44>: subq $0x10, %r10
0x10ddc7ff0 <+48>: cmpq (%r10), %rsi
0x10ddc7ff3 <+51>: jne 0x10ddc7fe0 ; <+32>
0x10ddc7ff5 <+53>: jmpq *0x8(%r10)
0x10ddc7ff9 <+57>: movl 0x18(%r11), %r10d
0x10ddc7ffd <+61>: shlq $0x4, %r10
0x10ddc8001 <+65>: addq 0x10(%r11), %r10
0x10ddc8005 <+69>: jmp 0x10ddc8017 ; <+87>
0x10ddc8007 <+71>: cmpq $0x0, (%r10)
0x10ddc800b <+75>: je 0x10ddc8049 ; <+137>
0x10ddc800d <+77>: cmpq 0x10(%r11), %r10
0x10ddc8011 <+81>: je 0x10ddc8020 ; <+96>
0x10ddc8013 <+83>: subq $0x10, %r10
0x10ddc8017 <+87>: cmpq (%r10), %rsi
0x10ddc801a <+90>: jne 0x10ddc8007 ; <+71>
0x10ddc801c <+92>: jmpq *0x8(%r10)
0x10ddc8020 <+96>: movq %r11, %rdx
0x10ddc8023 <+99>: jmp 0x10ddb2771 ; objc_msgSend_corrupt_cache_error
0x10ddc8028 <+104>: je 0x10ddc803e ; <+126>
0x10ddc802a <+106>: leaq 0x195fd7(%rip), %r11 ; objc_debug_taggedpointer_classes
0x10ddc8031 <+113>: movq %rdi, %r10
0x10ddc8034 <+116>: shrq $0x3c, %r10
0x10ddc8038 <+120>: movq (%r11,%r10,8), %r11
0x10ddc803c <+124>: jmp 0x10ddc7fc8 ; <+8>
0x10ddc803e <+126>: xorl %eax, %eax
0x10ddc8040 <+128>: xorl %edx, %edx
0x10ddc8042 <+130>: xorps %xmm0, %xmm0
0x10ddc8045 <+133>: xorps %xmm1, %xmm1
0x10ddc8048 <+136>: retq
0x10ddc8049 <+137>: enter $0x88, $0x0
0x10ddc804d <+141>: movdqa %xmm0, -0x80(%rbp)
0x10ddc8052 <+146>: pushq %rax
0x10ddc8053 <+147>: movdqa %xmm1, -0x70(%rbp)
0x10ddc8058 <+152>: pushq %rdi
0x10ddc8059 <+153>: movdqa %xmm2, -0x60(%rbp)
0x10ddc805e <+158>: pushq %rsi
0x10ddc805f <+159>: movdqa %xmm3, -0x50(%rbp)
0x10ddc8064 <+164>: pushq %rdx
0x10ddc8065 <+165>: movdqa %xmm4, -0x40(%rbp)
0x10ddc806a <+170>: pushq %rcx
0x10ddc806b <+171>: movdqa %xmm5, -0x30(%rbp)
0x10ddc8070 <+176>: pushq %r8
0x10ddc8072 <+178>: movdqa %xmm6, -0x20(%rbp)
0x10ddc8077 <+183>: pushq %r9
0x10ddc8079 <+185>: movdqa %xmm7, -0x10(%rbp)
0x10ddc807e <+190>: movq %rdi, %rdi
0x10ddc8081 <+193>: movq %rsi, %rsi
0x10ddc8084 <+196>: movq %r11, %rdx
0x10ddc8087 <+199>: callq 0x10ddbc469 ; _class_lookupMethodAndLoadCache3
0x10ddc808c <+204>: movq %rax, %r11
0x10ddc808f <+207>: movdqa -0x80(%rbp), %xmm0
0x10ddc8094 <+212>: popq %r9
0x10ddc8096 <+214>: movdqa -0x70(%rbp), %xmm1
0x10ddc809b <+219>: popq %r8
0x10ddc809d <+221>: movdqa -0x60(%rbp), %xmm2
0x10ddc80a2 <+226>: popq %rcx
0x10ddc80a3 <+227>: movdqa -0x50(%rbp), %xmm3
0x10ddc80a8 <+232>: popq %rdx
0x10ddc80a9 <+233>: movdqa -0x40(%rbp), %xmm4
0x10ddc80ae <+238>: popq %rsi
0x10ddc80af <+239>: movdqa -0x30(%rbp), %xmm5
0x10ddc80b4 <+244>: popq %rdi
0x10ddc80b5 <+245>: movdqa -0x20(%rbp), %xmm6
0x10ddc80ba <+250>: popq %rax
0x10ddc80bb <+251>: movdqa -0x10(%rbp), %xmm7
0x10ddc80c0 <+256>: leave
0x10ddc80c1 <+257>: cmpq %r11, %r11
0x10ddc80c4 <+260>: jmpq *%r11
0x10ddc80c7 <+263>: nopw %cs:(%rax,%rax)
0x10ddc80d6 <+278>: nop
0x10ddc80d7 <+279>: nop
0x10ddc80d8 <+280>: nop
0x10ddc80d9 <+281>: nop
0x10ddc80da <+282>: nop
如何修复此错误并停止应用崩溃?
答案 0 :(得分:2)
希望您熟悉Xcode中断点的用法。添加一个All Exception Break Point以查看正在发生的事情。你会在here上找到一个关于Break Point的好教程。
答案 1 :(得分:0)
如果您激活控制台(查看 - &gt;调试区域 - >运行控制台或Command + Shift + C),您可以看到更详细的崩溃报告。如果您在应用程序崩溃时向上滚动,则可以看到原因。
为了让事情变得更清楚,我会让我的某个应用程序崩溃,以便为您制作屏幕截图。它显示了下面崩溃的原因。