Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Effective Debugging Strategies

Abc432bb0450574a25b15ff23d399d5a?s=47 Vladimir Pouzanov
February 15, 2011
37

Effective Debugging Strategies

Abc432bb0450574a25b15ff23d399d5a?s=128

Vladimir Pouzanov

February 15, 2011
Tweet

Transcript

  1. 15.02.2011 Эффективные стратегии отладки !"#$%&%' “Farcaller” ()*#+,- <farcaller@gmail.com> Monday, September

    24, 12
  2. Темы на сегодня ✤ .#/%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
  3. Защитное кодирование ✤ (,-'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
  4. Проверяйте значения в assert ✤ (',-1'B601 &#27%&)& #'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
  5. Конструкторы/деструкторы ✤ !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
  6. Сеттеры ✤ 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
  7. Исключения ✤ 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
  8. 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
  9. “Слабые” ссылки ✤ (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
  10. Отладка проблем ✤ 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
  11. Вывод отладочной информации ✤ G79,":*)601 NSLog $"B -<-,$# 7,70,B+%B ,3M120,-

    % 9',E177,- ✤ __PRETTY_FUNCTION__ – %+>,'&#0%-+,1 ,0,3'#41+%1 0,C,, C$1 &< 7168#7 +#;,$%&7B ✤ G+,C$# 9,"1*+, 9'B0#0: NSLog - &#2',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
  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
  13. Еще про Gdb ✤ po a la print-object ✤ set

    $var ... ✤ call Monday, September 24, 12
  14. Полезные переменные окружения ✤ NSDebugEnabled ✤ NSZombieEnabled ✤ MallocStackLogging Monday,

    September 24, 12