DEV Community

Cover image for NSLog (Debugging) Cheat Sheet
Kunal Kamble
Kunal Kamble

Posted on • Edited on

3 2 1 2 1

NSLog (Debugging) Cheat Sheet

Purpose of this cheat sheet is to explore debugging tools for logging.

Frequently used format specifiers:

Type Format specifier
Object (prints description) %@
NSInteger %ld
NSUInteger %lu
CGFloat %f
pointer %p

More format specifiers are available on: String Format Specifiers ~ Apple Documentation

Helper method to translate objects/structures into NSString:

Function Description
NSStringFromClass Returns the name of a class as a string.
NSStringFromCGRect Returns a string formatted to contain the data from a rectangle in {{x, y}, {width, height}} format.
NSStringFromCGSize Returns a string formatted to contain the data from a size data structure in {width, height} format.
NSStringFromCGPoint Returns a string formatted to contain the data from a point in {x, y} format.
NSStringFromRange Returns a string representation of a range in {location, length} format.

More (less used) methods:

  • NSStringFromSelector
  • NSStringFromProtocol
  • NSStringFromCGVector
  • NSStringFromMapTable
  • NSStringFromUIOffset
  • NSStringFromHashTable
  • NSStringFromCGAffineTransform
  • NSStringFromDirectionalEdgeInsets

Debugging wrapper for NSLog

#define Debug(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
Enter fullscreen mode Exit fullscreen mode

Log a backtrace of your stack

NSLog(@"%@", [NSThread callStackSymbols]);
Enter fullscreen mode Exit fullscreen mode
2023-04-22 22:37:20.001544+0530 just-objc[5829:186391] (
    0   just-objc                           0x000000010099dda8 -[ViewController viewDidLoad] + 84

<trimmed ...>

    28  UIKitCore                           0x0000000107ebeff0 -[UIApplication _run] + 868
    29  UIKitCore                           0x0000000107ec2f3c UIApplicationMain + 124
    30  just-objc                           0x000000010099e024 main + 120
    31  dyld                                0x0000000100b2d514 start_sim + 20
    32  ???                                 0x0000000100d85f28 0x0 + 4309147432
    33  ???                                 0xdf35000000000000 0x0 + 16083761644223594496
)
Enter fullscreen mode Exit fullscreen mode

Sentry mobile image

Mobile Vitals: A first step to Faster Apps

Slow startup times, UI hangs, and frozen frames frustrate users—but they’re also fixable. Mobile Vitals help you measure and understand these performance issues so you can optimize your app’s speed and responsiveness. Learn how to use them to reduce friction and improve user experience.

Read the guide

Top comments (1)

Collapse
 
rational-bot-001 profile image
bot

Intersting!

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more