Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Effective Debugging Strategies
Search
Vladimir Pouzanov
February 15, 2011
78
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Effective Debugging Strategies
Vladimir Pouzanov
February 15, 2011
More Decks by Vladimir Pouzanov
See All by Vladimir Pouzanov
Zinc at Rust London '14
farcaller
1
140
Pixels Everywhere!
farcaller
0
170
Prepare to Dock
farcaller
1
280
REPL Done Right
farcaller
1
330
iOS in Motion
farcaller
1
150
Reversing WTF
farcaller
2
140
iOS TDD
farcaller
1
190
Clang 3.0 Memory Management
farcaller
1
130
Effective Multithreading in iOS
farcaller
1
140
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.3k
Everyday Curiosity
cassininazir
0
270
How to train your dragon (web standard)
notwaldorf
97
6.7k
Unsuck your backbone
ammeep
672
58k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Side Projects
sachag
455
43k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Transcript
15.02.2011 Эффективные стратегии отладки !"#$%&%' “Farcaller” ()*#+,- <
[email protected]
> Monday, September
24, 12
Темы на сегодня ✤ .#/%0+,1 2,$%',-#+%1 % '#++11 ,3+#')41+%1 ,5%3,2
✤ .+#6 7-,6 ,0"#$8%2! ✤ .+#6 7-,1 ,2')41+%1! Monday, September 24, 12
Защитное кодирование ✤ (,-'14$1+%1/)+%80,41+%1 9,":*,-#01":72%; $#++<; ✤ .#-%7#+%1 ✤ =%;%6
>16" ✤ ?0,3'#41+%1 ,5%32% 9,":*,-#01"@ ✤ ?3;,$ ,5%32% A)851 Monday, September 24, 12
Проверяйте значения в assert ✤ (',-1'B601 %&)& #'C)&1+0,- ✤ !,,3/1,
9',-1'B601 -7D, 80, $-%4107B – -71 "C)0 ✤ NSAssert* – $"B &10,$,-, NSCAssert* – $"B >)+2E%6 ✤ F>>120%-+<6 Release-2,$ 9'% 73,'21 7 NS_BLOCK_ASSERTIONS Monday, September 24, 12
Конструкторы/деструкторы ✤ !71C$# 9'%7-#%-#601 ,0-10 ,0 [super init] - self
✤ G -71C$# 9',-1'B601, 80, 0#& +1 nil ✤ ! -dealloc ,7-,3,4$#0: 91'1&1++<1 &,4+, 9',70, 81'1* [ivar_ release], 0#2 2#2 +alloc C#'#+0%')10, Monday, September 24, 12
Сеттеры ✤ H-+, 9',-1'B601 7%0)#E%@ 7 newValue == nil, 17"%
-< -<9,"+B101 $,9,"+%01":+<1 $1670-%B ✤ I#70, 71001' %79,":*)107B $"B ,7-,3,4$1+%B 91'1&1++,6 81'1* obj.value = nil Monday, September 24, 12
Исключения ✤ J7"% 2,$ 9,01+E%#":+, &,410 -<*-#0: ,5%32) 9'%&1+1+%B –
-<3'#7<-#601 %72"@81+%1 ✤ K#9'%&1' - -init 2"#77#, 2,0,'<6 +1 9,$$1'4%-#10 %+%E%#"%*#E%@ 31* #'C)&1+0,- Monday, September 24, 12
NSError ✤ NSError -71C$# -,*-'#/#10 9,"1*+)@ %+>,'&#E%@ ✤ K1 ,70#-"B601
,3'#3,02) “+# 9,0,&” – L0,0 &,&1+0 +%2,C$# +1 +#70#10, # 2,$ +1 '#3,0#10 ✤ ?7,31++, 0/#01":+, 9',-1'B601 -+15+%1 $#++<1 ✤ K1 *#3)$:01 9',-1'%0: 2,$ -,*-'#0# ! "#$!%& '(#$#)* (Apple ,70#-"B10 *# 7,3,6 9'#-, +#2%$#0: &)7,'# - *error) Monday, September 24, 12
“Слабые” ссылки ✤ (1'1$ )$#"1+%1& “41702,6” 77<"2%, -71C$# 9'1$-#'%01":+, )$#"B601
“7"#3)@” ,3'#0+)@ 77<"2) ✤ UITableView, MKMapView, etc. Monday, September 24, 12
Отладка проблем ✤ gdb +#&+,C, >)+2E%,+#":+11, 81& 2#4107B ✤ NSDebug.h
9,",+ &#"1+:2%; +B512 ✤ NSLog 7,,3/#10 , -,*&,4+<; 9',3"1&#; Monday, September 24, 12
Вывод отладочной информации ✤ G79,":*)601 NSLog $"B -<-,$# 7,70,B+%B ,3M120,-
% 9',E177,- ✤ __PRETTY_FUNCTION__ – %+>,'�%-+,1 ,0,3'#41+%1 0,C,, C$1 &< 7168#7 +#;,$%&7B ✤ G+,C$# 9,"1*+, 9'B0#0: NSLog - ',7<: ✤ #define NetLog NSLog ✤ #define DBLog NSLog ✤ $"B "1C2,6 -,*&,4+,70% ,02"@8#0: ",CC%+C E1"%2,& %"% 8#70%8+, Monday, September 24, 12
Магия Gdb ✤ (,&%&, break’,- %+,C$# ,81+: 9,"1*+, -<-#"%-#0:7B -
gdb 9'% 2#2,&-0, )7",-%% ✤ N"B L0,C, &,4+, %79,":*,-#0: '1$#20,' breakpoint’,- % )7",-%B ✤ __asm__("int $3\n" : : ); 3'B2#107B - $13#CC1', %"% -<*<-#10 O0)";), 17"% gdb +1 *#9)/1+ Monday, September 24, 12
Еще про Gdb ✤ po a la print-object ✤ set
$var ... ✤ call Monday, September 24, 12
Полезные переменные окружения ✤ NSDebugEnabled ✤ NSZombieEnabled ✤ MallocStackLogging Monday,
September 24, 12