gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:04:14 24 4
gpt4 key购买 nike

我怎样才能最容易地找出我的代码中触发此(即“程序接收信号: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/

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