iOSUIDebugging
by David Olesch
December 2016 - Austin iPhone Developer Group Meetup
WhatisDebugging?
December 2016 - Austin iPhone Developer Group Meetup
iOSUIDebugging?
December 2016 - Austin iPhone Developer Group Meetup
Debugbylogging
In 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
lldbtherealiOSappdebugger
(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
FacebookChisel
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
December 2016 - Austin iPhone Developer Group Meetup
R.I.P.pviews
2014-2016
December 2016 - Austin iPhone Developer Group Meetup
LongLivepvc
(lldb)pvc
.
December 2016 - Austin iPhone Developer Group Meetup
LongLivepvc
(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
LongLivepvc
(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
LongLivepvc
(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
LongLivevisualize
December 2016 - Austin iPhone Developer Group Meetup
LongLiveshow/hide
December 2016 - Austin iPhone Developer Group Meetup
LongLivecaflush
(lldb)pvc
.
December 2016 - Austin iPhone Developer Group Meetup
LongLivecaflush
(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
LongLivecaflush
(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
LongLivecaflush
(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
LongLivewivar
December 2016 - Austin iPhone Developer Group Meetup
LongLivepresponder
(lldb) presponder button
.
December 2016 - Austin iPhone Developer Group Meetup
LongLivepresponder
(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
+ (int)adjustableParameter {
return 5;
}
December 2016 - Austin iPhone Developer Group Meetup
LongLivethreadreturn
December 2016 - Austin iPhone Developer Group Meetup
iOSUIDebugging
by David Olesch
December 2016 - Austin iPhone Developer Group Meetup

iOS UI Debugging

  • 1.
    iOSUIDebugging by David Olesch December2016 - Austin iPhone Developer Group Meetup
  • 2.
    WhatisDebugging? December 2016 -Austin iPhone Developer Group Meetup
  • 3.
    iOSUIDebugging? December 2016 -Austin iPhone Developer Group Meetup
  • 4.
    Debugbylogging In 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
  • 5.
    lldbtherealiOSappdebugger (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
  • 6.
    FacebookChisel December 2016 -Austin iPhone Developer Group Meetup
  • 7.
    December 2016 -Austin iPhone Developer Group Meetup
  • 8.
    December 2016 -Austin iPhone Developer Group Meetup
  • 9.
    December 2016 -Austin iPhone Developer Group Meetup
  • 10.
    December 2016 -Austin iPhone Developer Group Meetup
  • 11.
    December 2016 -Austin iPhone Developer Group Meetup
  • 12.
    December 2016 -Austin iPhone Developer Group Meetup
  • 13.
    December 2016 -Austin iPhone Developer Group Meetup
  • 14.
    December 2016 -Austin iPhone Developer Group Meetup
  • 15.
    December 2016 -Austin iPhone Developer Group Meetup
  • 16.
    December 2016 -Austin iPhone Developer Group Meetup
  • 17.
    December 2016 -Austin iPhone Developer Group Meetup
  • 18.
    December 2016 -Austin iPhone Developer Group Meetup
  • 19.
    December 2016 -Austin iPhone Developer Group Meetup
  • 20.
    R.I.P.pviews 2014-2016 December 2016 -Austin iPhone Developer Group Meetup
  • 21.
    LongLivepvc (lldb)pvc . December 2016 -Austin iPhone Developer Group Meetup
  • 22.
    LongLivepvc (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
  • 23.
    LongLivepvc (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
  • 24.
    LongLivepvc (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
  • 25.
    LongLivevisualize December 2016 -Austin iPhone Developer Group Meetup
  • 26.
    LongLiveshow/hide December 2016 -Austin iPhone Developer Group Meetup
  • 27.
    LongLivecaflush (lldb)pvc . December 2016 -Austin iPhone Developer Group Meetup
  • 28.
    LongLivecaflush (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
  • 29.
    LongLivecaflush (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
  • 30.
    LongLivecaflush (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
  • 31.
    LongLivewivar December 2016 -Austin iPhone Developer Group Meetup
  • 32.
    LongLivepresponder (lldb) presponder button . December2016 - Austin iPhone Developer Group Meetup
  • 33.
    LongLivepresponder (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
  • 34.
    + (int)adjustableParameter { return5; } December 2016 - Austin iPhone Developer Group Meetup
  • 35.
    LongLivethreadreturn December 2016 -Austin iPhone Developer Group Meetup
  • 36.
    iOSUIDebugging by David Olesch December2016 - Austin iPhone Developer Group Meetup