#WWDC19
Debugging in Xcode 11
Chris Miles, Xcode Engineering Manager
Han Ming Ong, Xcode UI Engineer
Sebastian Fischer, Xcode UI Engineer
© 2019 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
Device Conditions and
•
Environment Overrides
Device Conditions and Environment Overrides
Device Conditions and Environment Overrides
Device Conditions and Environment Overrides
Device Conditions and Environment Overrides
Device Conditions and Environment Overrides
Device Conditions
Thermal state condition
Raises thermal state to — fair, serious, or critical
So you can reliably
• Understand app behavior under these elevated states
• Debug and verify your handling of thermal state changes
The device does not actually get warmer
Device Conditions
Network link condition
Real world profiles simulating network conditions
• High latency
• Low bandwidth
• High packet loss
• Slow DNS response
So you can reliably
• Understand and debug app behavior under various network conditions
Environment Overrides
Interface Style
Environment Overrides
Interface Style
Environment Overrides
Shopping List
Apple
Banana
Strawberry
Avocado
Interface Style Dynamic Type
Environment Overrides
Shopping List Shopping List
Apple Apple
Banana
Banana
Strawberry
Strawberry
Avocado
Avocado
Interface Style Dynamic Type
Environment Overrides
Shopping List Shopping List Shopping List
Apple Apple Apple
Banana
Banana Banana
Strawberry
Strawberry
Avocado Straw…
Avocado
Avoca...
Interface Style Dynamic Type
Environment Overrides
Shopping List
Shopping Apple
List
Shopping Apple
List Banana
Apple BananaStraw…
BananaStrawberry
Strawberry
Avoca...
Avocado
Avocado
Interface Style Accessibility Options Dynamic Type
Environment Overrides
Shopping List
Increase
On / Off
Shopping Apple
List
Contrast Labels
Shopping Apple
List Banana
Bold
Button
Apple BananaStraw…
Text Shapes BananaStrawberry
Strawberry
Avoca...
Avocado
Reduce Avocado
Grayscale
Transparency
Reduce
Smart
Motion Invert
Interface Style Accessibility Options Dynamic Type
•
Demo
•
Device conditions and environment overrides
Chris Miles, Xcode Engineering Manager
Device Conditions
Device Conditions
Device Conditions
Device-wide induced condition
Managed by Xcode
Tied to Xcode device connection
iOS status bar indicates when a
condition is active
Can be stopped on device
Device Conditions
Device-wide induced condition
Managed by Xcode
Tied to Xcode device connection
iOS status bar indicates when a
condition is active
Can be stopped on device
Environment Overrides
Override runtime environment of
debugged app
Overrides instantly
Only affects debugged app
System settings remain unchanged
Supports devices, simulators, and previews
Available for all platforms
•
Debugging Live Previews
Han Ming Ong, Xcode UI Engineer
SwiftUI Runtime Issues
SwiftUI Runtime Issues
SwiftUI Runtime Issues
Found when process is running
SwiftUI Runtime Issues
Found when process is running
Process continues executing
SwiftUI Runtime Issues
Found when process is running
Process continues executing
Details in Issues Navigator
SwiftUI Runtime Issues
Found when process is running
Process continues executing
Details in Issues Navigator
SwiftUI Runtime Issues
Found when process is running
Process continues executing
Details in Issues Navigator
All platforms and run destinations
•
Demo
•
Debugging live previews
Han Ming Ong, Debugger UI Engineer
Debugging Workflow
Debugging Workflow
Use contextual menu to start debugging
Debugging Workflow
Use contextual menu to start debugging
New debug session for source changes
Debugging Workflow
Use contextual menu to start debugging
New debug session for source changes
Keep the same file in main editor
Debugging Live Previews
Debugging Live Previews
Live previews are debuggable
Debugging Live Previews
Live previews are debuggable
Workflows for previews
Debugging Live Previews
Live previews are debuggable
Workflows for previews
SwiftUI runtime issues
•
Debugging SwiftUI View Hierarchies
Sebastian Fischer, Xcode UI Engineer
Debugging SwiftUI View Hierarchies
Declarative API
Composition and lightweight modifiers over complex views
Value type semantics
Platform specific views at runtime
Interoperability with UIKit and AppKit
•
Demo
•
Debugging SwiftUI view hierarchies
Sebastian Fischer, Xcode UI Engineer
Debugging SwiftUI View Hierarchies
View hierarchy in navigator and canvas
Properties and modifiers in inspector
Automatic inspector properties through Swift reflection
Custom inspector properties by adopting CustomReflectable
Support for mixed view hierarchies
View Hierarchy Debugging Improvements
UIWindowScene support
Inspectors
• Trait collections
• Named images
• Symbol images
• Named colors
• Improved constraint details
More Information
developer.apple.com/wwdc19/412
Designing for Adverse Network and Temperature Conditions Friday, 4:20
LLDB: Beyond "po" WWDC 2019