iphone - "Program received signal: EXC_BAD_ACCESS"- 如何识别触发的行?

标签 iphone xcode debugging ios exc-bad-access

我怎样才能最容易地找出我的代码中触发此(即“程序接收信号:EXC_BAD_ACCESS”)的点?

当我得到这个并查看控制台时,我没有看到任何其他信息,例如本例中的堆栈跟踪。我知道我可以在代码中放置断点并尝试逐步查找,但是,如果有一种方法可以更轻松地找到代码而无需大量断点并逐步完成,那就太好了。

编辑 1 - 重新输入回溯(重新回答这个答案),我看到了这个,这似乎并没有完全突出我的代码中的重点?

(gdb) backtrace
#0  0x00fd7a63 in objc_msgSend ()
#1  0x06019780 in ?? ()
#2  0x0046cf16 in -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] ()
#3  0x0046a9e7 in -[UITableViewRowData numberOfRows] ()
#4  0x003218c2 in -[UITableView noteNumberOfRowsChanged] ()
#5  0x0032e2b8 in -[UITableView reloadData] ()
#6  0x0032b470 in -[UITableView layoutSubviews] ()
#7  0x01d33451 in -[CALayer layoutSublayers] ()
#8  0x01d3317c in CALayerLayoutIfNeeded ()
#9  0x01d2c37c in CA::Context::commit_transaction ()
#10 0x01d2c0d0 in CA::Transaction::commit ()
#11 0x01d5c7d5 in CA::Transaction::observer_callback ()
#12 0x00e56fbb in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ ()
#13 0x00dec0e7 in __CFRunLoopDoObservers ()
#14 0x00db4bd7 in __CFRunLoopRun ()
#15 0x00db4240 in CFRunLoopRunSpecific ()
#16 0x00db4161 in CFRunLoopRunInMode ()
#17 0x017aa268 in GSEventRunModal ()
#18 0x017aa32d in GSEventRun ()
#19 0x002c342e in UIApplicationMain ()

最佳答案

NSZombieEnabled 很可能会帮助您找到大多数过度发布的错误。来自 CocoaDev :

Use in Xcode: Double-click an executable in the Executables group of your Xcode project. Click the Arguments tab. In the "Variables to be set in the environment:" section, make a variable called "NSZombieEnabled" and set its value to "YES".

对于特别讨厌的情况(在我的例子中是一个讨厌的过度自动释放错误)一些额外的标志,如 NSDebugEnabled、MallocStackLogging 和 MallocStackLoggingNoCompact 将帮助您检查任何变量的保留/释放历史。可以在此处找到有关如何使用它们的教程 http://www.cocoadev.com/index.pl?DebuggingAutorelease

关于iphone - "Program received signal: EXC_BAD_ACCESS"- 如何识别触发的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5137080/

相关文章:

objective-c - 获取当前系统时间?

iPhone - 20.0 和 20.0f 之间的区别

ios - 如何在操纵杆的方向上运行 SKAction

ios - Swift 中 ToView 出现在 FromView 后面

Eclipse 支持 .xsl 文件中的断点吗?

java - 在 Eclipse 中调试 Java 代码时看不到变量

objective-c - LLDB:使用指向内存中对象的指针显示所有对象

iphone - 振动到声音iPhone

iphone - 应用更新时 Core Data 中保存的数据会发生什么变化

objective-c - 使用网桥从 .framework 导入文件时出错