/CocoaDebug

🚀 iOS Debugging Tool

Primary LanguageSwiftMIT LicenseMIT

logo
Travis CI Build Status
Codacy Codacy Badge
Codecov codecov
Frameworks Carthage Compatible CocoaPods Compatible
Languages Languages
Platform Platform
Licence License MIT

Introduction

example

  • Shake to hide or show the black bubble. (support both device and simulator).

  • Long press the black bubble to show UIDebuggingInformationOverlay. (Apple's Private API, support iOS 10/11).

  • Application memory usage and FPS.

  • List all print() and NSLog() messages which have been written by developer in Xcode.

  • List of all the network requests sent by the application.

  • Shake device or simulator to share network details via email or copy to clipboard when you are in the Network Details page.

  • Copy logs. (long press the text, then select all or select copy).

  • Search logs by keyword.

  • List application and device informations, including version build bundle name bundle id screen resolution device iOS version

  • List all sandbox folders and files, supporting to preview and edit.

  • List crash errors. (optional)

Installation

CocoaPods

platform :ios, '8.0'
use_frameworks!

target 'YourTargetName' do
    pod 'CocoaDebug', :configurations => ['Debug']
end

Carthage

github "CocoaDebug/CocoaDebug"

WARNING: Don't submit .ipa to AppStore which has been linked with the CocoaDebug.framework. This Integration Guide outline a way to use build configurations to isolate linking the framework to Debug builds only.

Usage

Swift

//Step 1.
#if DEBUG
    import CocoaDebug
#endif

//Step 2.
#if DEBUG
    CocoaDebug.enable()
#endif

//Step 3.
public func print<T>(file: String = #file, function: String = #function, line: Int = #line, _ message: T, color: UIColor = .white) {
    #if DEBUG
        swiftLog(file, function, line, message, color)
    #endif
}

Objective-C

//Step 1.
#ifdef DEBUG
    @import CocoaDebug;
#endif

//Step 2.
#ifdef DEBUG
    [CocoaDebug enable];
#endif

//Step 3.
#ifdef DEBUG
    #define NSLog(fmt, ...) [CocoaDebug objcLog:[[NSString stringWithUTF8String:__FILE__] lastPathComponent] :NSStringFromSelector(_cmd) :__LINE__ :(fmt, ##__VA_ARGS__) :[UIColor whiteColor]]
#else
    #define NSLog(fmt, ...) nil
#endif

Please check Example_Swift.xcodeproj and Example_Objc.xcodeproj for more advanced usage.

NOTE: Be careful with Other Swift Flags & Preprocessor Macros when using Swift & Objective-C in one project. You can refer to here.

Parameters

When you initialize CocoaDebug, you can customize the following parameter values before CocoaDebug.enable().

  • serverURL - If the crawled URLs contain server URL ,set these URLs bold font to be marked. not mark when this value is nil. default value is nil.

  • ignoredURLs - Set the URLs which should not crawled, ignoring case, crawl all URLs when the value is nil. default value is nil.

  • onlyURLs - Set the URLs which are only crawled, ignoring case, crawl all URLs when the value is nil. default value is nil.

  • tabBarControllers - Set controllers to be added as child controllers of UITabBarController. default value is nil.

  • recordCrash - Whether to allow the recording of crash logs in app. default value is false.

  • logMaxCount - The maximum count of logs which CocoaDebug display. default value is 500.

  • emailToRecipients - Set the initial recipients to include in the email’s “To” field when share via email. default value is nil.

  • emailCcRecipients - Set the initial recipients to include in the email’s “Cc” field when share via email. default value is nil.

  • mainColor - Set the main color with hexadecimal format. default value is #42d459.

TODO

Thanks

Special thanks to remirobert.

License

CocoaDebug is released under the MIT license.