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
Debugging & Profiling
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Florian
June 04, 2014
Education
62
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Debugging & Profiling
My talk on debugging & profiling techniques for mobile testing days 2014 (german)
Florian
June 04, 2014
More Decks by Florian
See All by Florian
[iOS] dependency management
florianbuerger
0
79
Swift 2 in Production
florianbuerger
0
79
Dem Fehler auf der Spur - Mobile Testing Days 2015
florianbuerger
0
85
WatchKit overview
florianbuerger
0
180
Swift Intro
florianbuerger
1
230
AppCode versus Xcode
florianbuerger
0
460
Other Decks in Education
See All in Education
Laura Wilson - The Quarterly PR Pivot
laurawilsonbseo1
1
330
モブ社員がモブエンジニアを名乗って得られたこと_20260413
masakiokuda
4
520
We部コミュニティスライド2026-04-24
junhat6
0
170
アントレプレナーシップ教育機構 概要
sciencetokyo
PRO
0
3.7k
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
360
偶然のチャンスを掴みに行けるのは君だ!
kotomin_m
2
120
プロポーザルを書く技術とアンチパターン/proposal-writing-and-antipatterns
moriyuya
13
3.4k
AWS Certified Generative AI Developer - Professional Beta 不合格体験記
amarelo_n24
1
320
2026年度春学期 統計学 第2回 統計資料の収集と読み方 (2026. 4. 16)
akiraasano
PRO
0
170
自己紹介 / who-am-i
yasulab
6
6.8k
Gesture-based Interaction - Lecture 6 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
2.3k
Measuring what matters
jonoalderson
0
400
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
WCS-LA-2024
lcolladotor
0
620
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
RailsConf 2023
tenderlove
30
1.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Scaling GitHub
holman
464
140k
Done Done
chrislema
186
16k
How to Talk to Developers About Accessibility
jct
2
220
Transcript
@florianbuerger
None
Debugging Tools Profiling
Debugging
Exception Type: SIGSEGV Exception Codes: SEGV_ACCERR at 0x24 Crashed Thread:
14 (...) Thread 14 Crashed: 0 AGXGLDriver 0x2f24e37e agxuReloadCtxVertexConstants(GLDContextRec*, void*) + 2 1 GLEngine 0x326a4a37 gleDoDrawDispatchCoreES2 + 592 2 GLEngine 0x3268440b glDrawElements_IMM_ES2Exec + 184 3 QuartzCore 0x32916595 CA::OGL::GLContext::draw_elements(CA::OGL:: 4 QuartzCore 0x32916437 CA::OGL::Context::array_flush() + 88 5 QuartzCore 0x329162ab CA::OGL::Context::ClippedArray::next_rect(CA::Bounds&) + 220 6 QuartzCore 0x329449c7 CA::OGL::emit_quad_indices(CA::OGL::Context&, CA::OGL::RectState const&, 7 QuartzCore 0x32944845 CA::OGL::emit_mesh_with_center(CA::OGL::Context&, CA::OGL::RectState const&, 8 QuartzCore 0x3294d6ed CA::OGL::emit_n_part_rect(CA::OGL::Context&, CA::OGL::RectState const&, int, 9 QuartzCore 0x3294aff1 CA::OGL::emit_shadow_path(CA::OGL::Context&, double, CA::Vec2<float> const&, 10 QuartzCore 0x32928ae1 CA::CG::DrawPathShadow::draw_shadow(CA::CG::Renderer&, bool) const + 278 11 QuartzCore 0x32913b05 CA::CG::DrawOp::render(CA::CG::Renderer&) const + 738 12 QuartzCore 0x32912791 CA::CG::Queue::render_callback(void*) + 250 13 libdispatch.dylib 0x3b07ee7b _dispatch_queue_drain + 372 14 libdispatch.dylib 0x3b07bf93 _dispatch_queue_invoke + 40 15 libdispatch.dylib 0x3b07f745 _dispatch_root_queue_drain + 74 16 libdispatch.dylib 0x3b07f9c5 _dispatch_worker_thread2 + 54 17 libsystem_pthread.dylib 0x3b1a9dff _pthread_wqthread + 298 18 libsystem_pthread.dylib 0x3b1a9cc4 start_wqthread + 8
Panik&Ruhig&atmen
Mentales(Modell(=>(
Debugging(is(twice(as(hard(as( wri1ng(the(code(in(the(first(place.( Therefore,(if(you(write(the(code(as( cleverly(as(possible,(you(are,(by( defini1on,(not(smart(enough(to( debug(it.( —"Brian"Kernighan
100%$Verständnis
Tools
Xcode&Debugger
Alle$Breakpoints$ de0/ak2vieren Standort simulieren Programm0 ausführung$ kontrollieren
Demo
Watch&on&Vimeo h"ps:/ /vimeo.com/97512083
Target'Schemes
Launch'Arguments
-NSShowNonLocalizedStrings YES -NSDoubleLocalizedStrings YES -AppleLanguages (German)
None
LLDB$Debugger
(…) po expr (…)
po (NSString *)[self title]!→""Foo"
expr [self setTitle:@"Bar"]!→""Bar"
Aliase command alias spark \ p (void*)dlopen("(...)/SparkInspector.dylib")
chisel
Danke&Facebook 1. Sammlung*von*LLDB*Kommandos 2. presponder*=>*Ausgabe*der*Responder*Chain 3. (...) 4. brew install
chisel
Demo
Watch&on&Vimeo h"ps:/ /vimeo.com/97512085
Wissen&weitergeben ~/.lldbinit !!dynamic!Library!für!iOS!! http://defagos.roon.io/sharing-lldb-debugging- helpers-between-projects-using-a-dynamic-library
Logging
Logging&!=&NSLog
Logging&via&Breakpoints
Logging&via&Breakpoints kein%Neu(Kompilieren De#/Ak'vierung.mit.einem.Klick Logs%in%Release%builds
CocoaLumberjack
Schnell Mäch%g Flexibel
NSLogger(❤(CocoaLumberjack
Demo
View%Inspec+on
Spark&Inspector Reveal
Spark&Inspector&der&laufenden&App&hinzufügen command alias spark p \ (void*)dlopen(" \ (…)Spark Inspector.app/(…)SparkInspector.dylib")
Live%Änderungen
Demo
Zusammenfassung Wissen&über&Code&ist&falsch NSLog()!=>!CocoaLumberjack Reveal!oder!Spark*Inspector
Profiling
Vermuten(Messen!
None
Performance
None
60#FPS!
None
Core%Data
Caching Disk%I/O
Demo
Q&A
Links&(1/2) • Florian)Bürger)→)h0p:/ /florianbuerger.com • keslcod)GmbH)→)h0p:/ /keslcod.com • LLDB)Kommandos)→)h0ps:/ /developer.apple.com/(…)
• Facebook)chisel)→)h0ps:/ /github.com/facebook/chisel • Dynamic)Library)für)iOS)→)h0p:/ /defagos.roon.io/(…) • Cocoa)Lumberjack)→)h0ps:/ /github.com/CocoaLumberjack/ CocoaLumberjack
Links&(2/2) • NSLogger)→)h,ps:/ /github.com/fpillet/NSLogger • NSLogger)zu)CoocaLumberjack)Connector)→)h,ps:/ /github.com/ steipete/NSLogger@CocoaLumberjack@connector • Spark)Inspector)→)h,p:/
/sparkinspector.com • Reveval)→)h,p:/ /revealapp.com