[英]Debug Iphone Program received signal: “EXC_BAD_ACCESS”
我搜索並嘗試了很多。 但是我真的不知道該如何解決– 感謝您的幫助
錯誤消息:
Program received signal: “EXC_BAD_ACCESS”.
生產線投擲味精
log(sos_Trace, @"sendMail");
重要
我使用了以下日志記錄庫: http : //code.google.com/p/soslog-objc/
完整的源文件
#import "ContactViewController.h"
#import "SOSLog.h"
@implementation ContactViewController
@synthesize mailButton, delegate;
- (void)viewDidLoad {
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg_tile.gif"]];
[super viewDidLoad];
}
- (IBAction)sendMail:(id)sender {
NSLog(@"sendMail");
log(sos_Trace, @"sendMail");
[delegate mail:self];
}
- (void)dealloc {
[self.mailButton release];
self.delegate = nil;
[super dealloc];
}
@end
看一下SOS日志記錄框架的源代碼log(sos_Trace, @"sendMail");
除非您在別處有破壞日志記錄基礎結構內部的代碼, 否則崩潰的根源不可能。
發布崩潰的完整堆棧跟蹤。
正如@benzado指出的那樣,您的內存管理代碼中有一些錯誤。 修復那些。 我建議對代碼運行靜態分析器,並修復發現的任何內容。 Xcode中的shift-cmd-A應該可以解決問題。
另外,如果要記錄調用方法的時間,則可以在任何方法中使用 :
log(sos_Trace, NSStringFromSelector(_cmd));
要么:
NSLog(@"[%@ %@] -- your message here", NSStringFromClass([self class]), NSStringFromSelector(_cmd));
我以前沒有使用過soslog框架,因此在此我無法提供任何見解。 但是,EXC_BAD_ACCESS通常是由於嘗試訪問已取消分配或從未初始化過的對象而引起的。 在調用它之前是否已設置sos_Trace?
EXC_BAD_ACCESS
表示您試圖訪問無效地址的內存。 當您嘗試使用尚未初始化並且指向內存中某個隨機位置的指針時,通常會發生這種情況。
我對該日志庫一無所知,但我想您需要調用一些設置或初始化函數。 但是,瀏覽該網站似乎並不存在。
盡管可能不相關,但值得一提的是線
[self.mailButton release];
在您的dealloc
方法中。 這可能不是問題,因為它在您的dealloc方法中,但是如果您要使用屬性訪問器,則應保留並釋放它。 如果在其他任何地方都有該行,則如果重新分配了mailButton屬性,則會在以后導致EXC_BAD_ACCESS。 那是因為:
self.mailButton = THING; // retain count +1
[self.mailButton release]; // retain count -1
self.mailButton = OTHER; // EXC_BAD_ACCESS!
這是因為第三行實際上是對setMailButton:
的調用,該調用在內部調用[THING release]
,但是由於您已經釋放了它,所以您現在已經失去了對setMailButton:
/ release調用的平衡,因此無論是后來還是以后(如果有人保留了它) )release將在無效對象上被調用,並且您的程序進入kablooey。
修復了該錯誤。 由於缺少保留,套接字被取消分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.