gpt4 book ai didi

ios - 无法弄清楚调试器消息的含义

转载 作者:行者123 更新时间:2023-11-28 22:02:59 26 4
gpt4 key购买 nike

这是一个基于具体案例的调试建议的一般性问题。

这是我在 Xcode 控制台中收到的消息:

2014-07-10 10:54:34.831 MyApp[1975:60b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]'
*** First throw call stack:
(0x2ea83f83 0x391d0ccf 0x2e9ba7cb 0xd18ed 0xcda77 0x10818f 0xcc24b 0x107c87 0x312bb6df 0x313cf9eb 0x312bb6df 0x312ace89 0x312ac64d 0x312ac4bf 0x312abfe5 0x312a9827 0x3131333d 0x3130ffad 0x3130a56b 0x312a66e9 0x312a5851 0x31309ca9 0x338dbaed 0x338db6d7 0x2ea4ea67 0x2ea4ea03 0x2ea4d1d7 0x2e9b7ebf 0x2e9b7ca3 0x31308ed1 0x3130414d 0x108229 0x396ddab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

我不得不说,除了:

'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]'

这给了我遇到的问题的提示,对我来说似乎没什么用。

然后我尝试获取回溯,运行 bt 命令。我明白了:

(lldb) bt
* thread #1: tid = 0x3db71, 0x397931f0 libsystem_kernel.dylib`__pthread_kill + 8, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x397931f0 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x397fd796 libsystem_pthread.dylib`pthread_kill + 58
frame #2: 0x39743fdc libsystem_c.dylib`abort + 76
frame #3: 0x38a72cd6 libc++abi.dylib`abort_message + 74
frame #4: 0x38a8b6e4 libc++abi.dylib`default_terminate_handler() + 252
frame #5: 0x391d0f64 libobjc.A.dylib`_objc_terminate() + 192
frame #6: 0x38a891c6 libc++abi.dylib`std::__terminate(void (*)()) + 78
frame #7: 0x38a88d2c libc++abi.dylib`__cxa_rethrow + 100
frame #8: 0x391d0e16 libobjc.A.dylib`objc_exception_rethrow + 42
frame #9: 0x2e9b7f34 CoreFoundation`CFRunLoopRunSpecific + 640
frame #10: 0x2e9b7ca2 CoreFoundation`CFRunLoopRunInMode + 106
frame #11: 0x31308ed0 UIKit`-[UIApplication _run] + 760
frame #12: 0x3130414c UIKit`UIApplicationMain + 1136
* frame #13: 0x00108228 MyApp `main(argc=1, argv=0x27d59d04) + 116 at main.m:16
(lldb)

我还必须承认,bt 命令的结果对我没有多大帮助,无法找到我的代码中可能有问题的地方。

我希望我在这里过于消极,并且错过了以正确方式查看此信息的要点。有人可以告诉我在这种情况下该怎么做吗?我应该在调试器控制台中运行不同的命令以获得有用的东西还是什么?

最佳答案

诊断此类错误的最简单策略是从 Xcode 调试器启动应用程序。确保设置了“所有异常”断点:

  1. 在左侧面板中显示断点导航器。
  2. 点击左下角的“+”按钮。
  3. 选择“添加异常断点”

此时您应该有一个断点,它会在检测到任何异常时停止程序。将您的程序运行到失败点,您应该在首次检测到数组边界错误的那一行停止,而不是在最终的全局异常处理程序处停止。

关于ios - 无法弄清楚调试器消息的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com