Ladění iOS aplikacínejen v Xcode@kubabreckaiosak.cz
LLDB! Pokus Applu udělat GDB znovu a lépe! Xcode používá LLDB během ladění! všechno, co jde udělat v Xcode, jde udělat i z...
Základy ladění!   breakpoints! watchpoints!   exception breakpoint! printf, NSLog! konzole LLDB!   “po”
Klávesové zkratky! Výchozí:!   build … Cmd+B!   run … Cmd+R!   stop … Cmd+.!   show/hide console … Cmd+Shift+Y! záložky vl...
Jak zkrotit výjimku?! Není výjimka jako výjimka! NSException … @throw!   C++ výjimka … throw! Výjimka procesoru … EXC_ARIT...
Co je to za výjimku?! Vybrat první frame na stacku!   “po $eax” / “po $r0”
Nebojte se cizích stack framů
Kdy chytit výjimku?!   “on throw”!   “on catch”! už je pozdě, nemáme stack trace! nejraději bychom “on throw if will not b...
Zombie objects!   K nezaplacení při ladění poškození paměti! Signalizace:!   EXC_BAD_ACCESS! výjimky v “běžných” funkcích ...
Guard Malloc! Detekce poškození paměti!   buffer overrun!   double-free! Alokuje objekty do samostatných stránek! Při dealo...
Retain loops! Signalizace:! Stále se zvyšuje paměťová zátěž procesu!   Instruments – Leaks
“po”! po $eax! po self! po [[UIApplication sharedApplication] keyWindow]! po [self.view recursiveDescription]
Breakpointy! řádek v kódu! metoda (i cizí)!   b “-[UIView setFrame:]”! selektor (pro libovolný object)!   breakpoint set –...
Breakpointy!   Breakpoint actions!   Breakpoint conditions! Watchpoints
LLDB command-line!   Persistent objects! po $0 = object! nemění retain count (!)!   p, po, expr
UI hierarchie! Reveal.app!   Spark Inspector
Live modify! Cycript! superDB
Novinky v Xcode 5!   Debug Gauges!   Visualizations!   Data formatters!   Summaries, synthetic children!   v Pythonu
Ponaučení! Ladící arzenál je velký! Včas poznejte, kdy laděním ztrácíte příliš mnoho času! Chybí vám nějaký nástroj/postup...
Otázky?
Otázky?Děkuji za pozornost.Kuba Břečka
@kubabrecka
kubabrecka.com
iosak.cz
Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]
Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]
Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]
Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]
Upcoming SlideShare
Loading in …5
×

Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]

2,140 views
2,050 views

Published on

Ladění prostě patří k vývoji, mnozí však tuto činnost dělají velice neradi a Xcode nám to příliš nezpříjemňuje. Přijďte se naučit správně zacházet s vyjímkami, vyznat se se výpisech stack framů, používat jiné nástroje než Xcode a celkově efektivně ladit programy.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,140
On SlideShare
0
From Embeds
0
Number of Embeds
1,484
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ladění iOS aplikací nejen v Xcode [For Mobile červen 2013]

  1. 1. Ladění iOS aplikacínejen v Xcode@kubabreckaiosak.cz
  2. 2. LLDB! Pokus Applu udělat GDB znovu a lépe! Xcode používá LLDB během ladění! všechno, co jde udělat v Xcode, jde udělat i z příkazovékonzole
  3. 3. Základy ladění!   breakpoints! watchpoints!   exception breakpoint! printf, NSLog! konzole LLDB!   “po”
  4. 4. Klávesové zkratky! Výchozí:!   build … Cmd+B!   run … Cmd+R!   stop … Cmd+.!   show/hide console … Cmd+Shift+Y! záložky vlevo … Cmd+1, Cmd+2, …! Změňte si:!   step into … F11!   step over … F10!   run/pause … F5!   step out … Shift+F11
  5. 5. Jak zkrotit výjimku?! Není výjimka jako výjimka! NSException … @throw!   C++ výjimka … throw! Výjimka procesoru … EXC_ARITHMETIC! Signál … SIGBUS
  6. 6. Co je to za výjimku?! Vybrat první frame na stacku!   “po $eax” / “po $r0”
  7. 7. Nebojte se cizích stack framů
  8. 8. Kdy chytit výjimku?!   “on throw”!   “on catch”! už je pozdě, nemáme stack trace! nejraději bychom “on throw if will not be caught”
  9. 9. Zombie objects!   K nezaplacení při ladění poškození paměti! Signalizace:!   EXC_BAD_ACCESS! výjimky v “běžných” funkcích … objc_retain, objc_release!   “unrecognized selector sent to instance”! obsah proměnných nedává smysl
  10. 10. Guard Malloc! Detekce poškození paměti!   buffer overrun!   double-free! Alokuje objekty do samostatných stránek! Při dealokaci! kontroluje okolí objektu! stránku fyzicky zneplatní
  11. 11. Retain loops! Signalizace:! Stále se zvyšuje paměťová zátěž procesu!   Instruments – Leaks
  12. 12. “po”! po $eax! po self! po [[UIApplication sharedApplication] keyWindow]! po [self.view recursiveDescription]
  13. 13. Breakpointy! řádek v kódu! metoda (i cizí)!   b “-[UIView setFrame:]”! selektor (pro libovolný object)!   breakpoint set –S initWithFrame:
  14. 14. Breakpointy!   Breakpoint actions!   Breakpoint conditions! Watchpoints
  15. 15. LLDB command-line!   Persistent objects! po $0 = object! nemění retain count (!)!   p, po, expr
  16. 16. UI hierarchie! Reveal.app!   Spark Inspector
  17. 17. Live modify! Cycript! superDB
  18. 18. Novinky v Xcode 5!   Debug Gauges!   Visualizations!   Data formatters!   Summaries, synthetic children!   v Pythonu
  19. 19. Ponaučení! Ladící arzenál je velký! Včas poznejte, kdy laděním ztrácíte příliš mnoho času! Chybí vám nějaký nástroj/postup pro ladění? Vytvořte siho!!   - (void)description { … }! Jste v koncích? Napište mi J
  20. 20. Otázky?
  21. 21. Otázky?Děkuji za pozornost.Kuba Břečka
@kubabrecka
kubabrecka.com
iosak.cz

×