2011-08-17 67 views
1

我故意創建了一個「EXC_BAD_ACCESS」錯誤.. 當然應用程序崩潰,但調試器不知何故缺少「EXC_BAD_ACCESS」消息。 爲什麼?Xcode 4在調試區域中不顯示「EXC_BAD_ACCESS」。爲什麼不?

這是我使用的代碼:

NSString *str = [[NSString alloc] initWithFormat:@"Foo"]; 
NSArray *a = [[NSArray alloc ]initWithObjects:str, nil]; 
[str release]; 
[a release]; 
NSLog(@"%@",str); 

這是調試日誌:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "x86_64-apple-darwin".Attaching to process 41313. 
sharedlibrary apply-load-rules all 
(gdb) 
+0

你正在使用的是什麼開發者或發行版? – 2011-08-17 13:00:16

+0

開發人員 - 調試 – Rizon 2011-08-17 13:28:00

+0

只是釋放一個對象不會改變對象,它的內存將存在一段非特定的時間。因此,崩潰可能不會立即引用內存。 – zaph 2011-08-17 14:58:46

回答

0

在努力吐出什麼被告知我問到類似的問題同事,我被告知這是蘋果公司的等價物,「對象實例未設置爲對象的實例」。調試器有時會顯示(可能)導致它的轉儲,而其他時間完全忽略它。我相信這是有原因的,但它可能會隱藏在蘋果大廳深處的文件中。到目前爲止,我從來沒有發現任何具有EXC_BAD_ACCESS轉儲(或缺少轉儲)的模式。我剛剛學會忽略缺失的信息,並開始尋找指針問題!

雖然不是太有幫助,但我想我會分享這個!

0

可能是NSLog的問題...嘗試另一種方法來創建段錯誤。例如:

char * str; 

str  = (char *)666; 
str[ 0 ] = 0; 
相關問題