ios ui debugging

36
iOS UI Debugging by David Olesch December 2016 - Austin iPhone Developer Group Meetup

Upload: davidolesch

Post on 09-Feb-2017

47 views

Category:

Software


0 download

TRANSCRIPT

Page 1: iOS UI Debugging

iOS UI Debuggingby David Olesch

December 2016 - Austin iPhone Developer Group Meetup

Page 2: iOS UI Debugging

What is Debugging?December 2016 - Austin iPhone Developer Group Meetup

Page 3: iOS UI Debugging

iOS UI Debugging?

December 2016 - Austin iPhone Developer Group Meetup

Page 4: iOS UI Debugging

Debug by loggingIn Objective-C

object.someVariable = @"Hello World";NSLog(object.someVariable); // Logs "Hello World"

In Swi!object.someVariable = "Hello World"print(object.someVariable) // Logs "Hello World"

December 2016 - Austin iPhone Developer Group Meetup

Page 5: iOS UI Debugging

lldb the real iOS app debugger(lldb) po object<NSObject: 0x7fe572d8df70; someVariable = "Hello World">

(lldb) po [object someVariable]Hello World

(lldb) p [object someVariable](NSString *) $0 = 0x000d9080 @"Hello World"

December 2016 - Austin iPhone Developer Group Meetup

Page 6: iOS UI Debugging

Facebook Chisel

December 2016 - Austin iPhone Developer Group Meetup

Page 7: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 8: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 9: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 10: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 11: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 12: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 13: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 14: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 15: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 16: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 17: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 18: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 19: iOS UI Debugging

December 2016 - Austin iPhone Developer Group Meetup

Page 20: iOS UI Debugging

R.I.P. pviews2014-2016

December 2016 - Austin iPhone Developer Group Meetup

Page 21: iOS UI Debugging

Long Live pvc(lldb)pvc .

December 2016 - Austin iPhone Developer Group Meetup

Page 22: iOS UI Debugging

Long Live pvc(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

December 2016 - Austin iPhone Developer Group Meetup

Page 23: iOS UI Debugging

Long Live pvc(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

(lldb)po (int)[[0x7fe572f74b50 items] count]

December 2016 - Austin iPhone Developer Group Meetup

Page 24: iOS UI Debugging

Long Live pvc(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

(lldb)po (int)[[0x7fe572f74b50 items] count]13

December 2016 - Austin iPhone Developer Group Meetup

Page 25: iOS UI Debugging

Long Live visualizeDecember 2016 - Austin iPhone Developer Group Meetup

Page 26: iOS UI Debugging

Long Live show/hideDecember 2016 - Austin iPhone Developer Group Meetup

Page 27: iOS UI Debugging

Long Live caflush(lldb)pvc .

December 2016 - Austin iPhone Developer Group Meetup

Page 28: iOS UI Debugging

Long Live caflush(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

December 2016 - Austin iPhone Developer Group Meetup

Page 29: iOS UI Debugging

Long Live caflush(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

(lldb) e id $vc = [UIViewController new](lldb) e (void)[$vc setTitle:@"Debug View Controller"](lldb) e (void)[0x7fe57400fa00 pushViewContoller:$vc animated:YES]

December 2016 - Austin iPhone Developer Group Meetup

Page 30: iOS UI Debugging

Long Live caflush(lldb)pvc<UINavigationController 0x7fe57400fa00>, state: appeared, view: <UILayoutContainerView 0x7fe575013420> | <DOTriviaContainerViewController 0x7fe572f21c60>, state: appeared, view: <UIView 0x7fe572cd3ed0> | | <DOLevelCategoriesViewController 0x7fe572f74b50>, state: appeared, view: <UICollectionViewControllerWrapperView 0x7fe572f48380>

(lldb) e id $vc = [UIViewController new](lldb) e (void)[$vc setTitle:@"Debug View Controller"](lldb) e (void)[0x7fe57400fa00 pushViewContoller:$vc animated:YES]

(lldb) caflush

December 2016 - Austin iPhone Developer Group Meetup

Page 31: iOS UI Debugging

Long Live wivarDecember 2016 - Austin iPhone Developer Group Meetup

Page 32: iOS UI Debugging

Long Live presponder(lldb) presponder button .

December 2016 - Austin iPhone Developer Group Meetup

Page 33: iOS UI Debugging

Long Live presponder(lldb) presponder button<UIButton: 0x7ff91275b4c0; frame = (12 144; 170 44); opaque = NO; autoresize = RM+BM; tag = 3; layer = <CALayer: 0x7ff912427680>> | <UIView: 0x7ff9124f5650; frame = (0 0; 200 200); gestureRecognizers = <NSArray: 0x7ff914846c20>; layer = <CALayer: 0x7ff914935e40>> | | <UICollectionViewCell: 0x7ff914932660; frame = (60 0; 200 200); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7ff914935030>> | | | <UICollectionView: 0x7ff912897400; frame = (0 189.333; 320 200); clipsToBounds = YES; opaque = NO; autoresize = W+H> | | | | <DOLevelCategoryCell: 0x7ff9124ecf00; baseClass = UICollectionViewCell; frame = (0 44; 320 568)> | | | | | <UICollectionView: 0x7ff912871000; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO> | | | | | | <UICollectionViewControllerWrapperView: 0x7ff912726610; frame = (0 0; 320 568); autoresize = W+H> | | | | | | | <DOLevelCategoriesViewController: 0x7ff9125a0fe0> | | | | | | | | <UIView: 0x7ff91259a380; frame = (0 0; 320 568); opaque = NO; autoresize = RM+BM> | | | | | | | | | <UIView: 0x7ff9125a9050; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7ff9125aee60>> | | | | | | | | | | <DOTriviaContainerViewController: 0x7ff912428fb0> | | | | | | | | | | | <UIViewControllerWrapperView: 0x7ff914841cb0; frame = (0 0; 320 568); autoresize = W+H> | | | | | | | | | | | | <UINavigationTransitionView: 0x7ff912752be0; frame = (0 0; 320 568); clipsToBounds = YES> | | | | | | | | | | | | | <UILayoutContainerView: 0x7ff91248f590; frame = (0 0; 320 568); autoresize = W+H> | | | | | | | | | | | | | | <UINavigationController: 0x7ff912841c00> | | | | | | | | | | | | | | | <UIWindow: 0x7ff9124596e0; frame = (0 0; 320 568)> | | | | | | | | | | | | | | | | <UIApplication: 0x7ff912504a70> | | | | | | | | | | | | | | | | | <DOAppDelegate: 0x7ff912506a40>

December 2016 - Austin iPhone Developer Group Meetup

Page 34: iOS UI Debugging

+ (int)adjustableParameter { return 5;}

December 2016 - Austin iPhone Developer Group Meetup

Page 35: iOS UI Debugging

Long Live thread return

December 2016 - Austin iPhone Developer Group Meetup

Page 36: iOS UI Debugging

iOS UI Debuggingby David Olesch

December 2016 - Austin iPhone Developer Group Meetup