Remote network and data debugging for your native iOS app using Chrome Developer Tools

Overview

PonyDebugger Logo

PonyDebugger

CI Status Version License Platform

PonyDebugger is a remote debugging toolset. It is a client library and gateway server combination that uses Chrome Developer Tools on your browser to debug your application's network traffic and managed object contexts.

To use PonyDebugger, you must implement the client in your application and connect it to the gateway server. There is currently an iOS client and the gateway server.

PonyDebugger is licensed under the Apache Licence, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

Changes

v0.4.0 - 2014-08-15

  • Support NSURLSession requests for the Network Debugger. (@viteinfinite)
  • New test application that removes the AFNetworking dependency. (@viteinfinite)
  • Remove custom base64 implementation with Apple's built-in implementation. (@kyleve)
  • Add PodSpec for pulling the git repository directly. (@wlue)

v0.3.1 - 2014-01-02

  • Fix only building active arch in debug. (@kyleve)
  • Fix view hierarchy debugging with complex key paths. (@ryanolsonk)
  • Fix crash in swizzled exchangeSubviewAtIndex:withSubviewAtIndex: (@ryanolsonk)
  • Fix for crash when having a library that looks like a NSURLConnectionDelegate (@peterwilli)

v0.3.0 - 2013-05-01

  • Remote Logging and Introspection (@wlue)
  • Request response pretty printing in Network Debugger (@davidapgar)
  • Minor bug fixes and improvements. (@jerryhjones, @conradev, @ryanolsonk)

v0.2.1-beta1 - 2013-01-12

  • Bonjour support (@jeanregisser)
  • Memory leak fix (@rwickliffe)

Features

Network Traffic Debugging

PonyDebugger sends your application's network traffic through ponyd, PonyDebugger's proxy server. You use Inspector's Network tools to debug network traffic like how you would debug network traffic on a website in Google Chrome.

PonyDebugger Network Debugging Screenshot

PonyDebugger forwards network traffic, and does not sniff network traffic. This means that traffic sent over a secure protocol (https) is debuggable.

Currently, the iOS client automatically proxies data that is sent via NSURLConnection and NSURLSession methods. This means that it will automatically work with AFNetworking, and other libraries that use NSURLConnection or NSURLSession for network requests.

Core Data Browser

The Core Data browsing feature allows you to register your application's NSManagedObjectContexts and browse all of its entities and managed objects. You browse data from the IndexedDB section in the Resource tab in Chrome Developer Tools.

PonyDebugger Core Data Browser Screenshot

These are read-only stores at the moment. There are plans to implement data mutation in a future release.

View Hierarchy Debugging

PonyDebugger displays your application's view hierarchy in the Elements tab of the Chrome Developer Tools. As you move through the XML tree, the corresponding views are highlighted in your app. You can edit the displayed attributes (i.e. frame, alpha, ...) straight from the Elements tab, and you can change which attributes to display by giving PonyDebugger an array of UIView key paths. Deleting a node in the elements panel will remove that node from the view hierarchy. Finally, when a view is highlighted, you can move it or resize it from the app using pan and pinch gestures.

PonyDebugger View Hierarchy Debugging Screenshot

An "inspect" mode can be entered by clicking on the magnifying glass in the lower left corner of the Developer Tools window. In this mode, tapping on a view in the iOS app will select the corresponding node in the elements panel. You can also hold and drag your finger around to see the different views highlighted. When you lift your finger, the highlighted view will be selected in the elements panel.

Currently only a subset of the actions possible from the elements panel have been implemented. There is significant room for continued work and improvement, but the current functionality should prove useful nonetheless.

Remote Logging

PonyDebugger lets you remotely log text and object dumps via the PDLog and PDLogObjects function. This lets you reduce the amount of content being logged in NSLog, while also allowing you to dynamically introspect objects.

PonyDebugger Remote Login Screenshot

Introspected objects can be expanded recursively by property. This means that you don't have to breakpoint and log in GDB or LLDB to introspect an object.

Quick Start

Prerequisite: Xcode's Command Line Tools must be installed from the "Downloads" preference pane.

curl -s https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py | \
  python - --ponyd-symlink=/usr/local/bin/ponyd ~/Library/PonyDebugger

This will install ponyd script to ~/Library/PonyDebugger/bin/ponyd and attempt to symlink /usr/local/bin/ponyd to it. It will also download the latest chrome dev tools source.

Then start the PonyDebugger gateway server

ponyd serve --listen-interface=127.0.0.1

In your browser, navigate to http://localhost:9000. You should see the PonyGateway lobby. Now you need to integrate the client to your application.

For more detailed instructions, check out the gateway server README_ponyd.

PonyDebugger iOS Client

The PonyDebugger iOS client lets you to debug your application's network requests and track your managed object contexts.

Technical

  • Requires iOS 5.0 or above
  • Uses ARC (Automatic Reference Counting).
  • Uses SocketRocket as a WebSocket client.

Installing

CocoaPods

CocoaPods automates 3rd party dependencies in Objective-C.

Install the ruby gem.

$ sudo gem install cocoapods
$ pod setup

Depending on your Ruby installation, you may not have to run as sudo to install the cocoapods gem.

Create a Podfile. You must be running on iOS 5 or above.

platform :ios, '5.0'
pod 'PonyDebugger', '~> 0.4.3'

If you would like to use the latest version of PonyDebugger, point to the Github repository directly.

pod 'PonyDebugger', :git => 'https://github.com/square/PonyDebugger.git'

Install dependencies.

$ pod install

When using CocoaPods, you must open the .xcworkspace file instead of the project file when building your project.

Manual Installation

  • Extract a tarball or zipball of the repository into your project directory. If you prefer, you may also add the project as a submodule. The iOS client uses SocketRocket as a dependency, and it is included as a submodule.
cd /path/to/YourApplication
mkdir Frameworks
git submodule add git://github.com/square/PonyDebugger.git Frameworks/PonyDebugger
git submodule update --init --recursive
  • Add PonyDebugger/PonyDebugger.xcodeproj as a subproject.

PonyDebugger Installing Subproject

  • In your Project Settings, add the PonyDebugger target as a Target Dependency in the Build Phases tab.

PonyDebugger Installing Target Dependencies

  • Link libPonyDebugger.a, libSocketRocket.a, and the Framework dependencies to your project.

PonyDebugger Installing Link Libraries and Frameworks

  • PonyDebugger and SocketRocket take advantage of Objective C's ability to add categories on an object, but this isn't enabled for static libraries by default. To enable this, add the -ObjC flag to the "Other Linker Flags" build setting.

PonyDebugger Installing Other Linker Flags

Framework Dependencies

Your .app must be linked against the following frameworks/dylibs in addition to libPonyDebugger.a and libSocketRocket.a.

  • libicucore.dylib
  • CFNetwork.framework
  • CoreData.framework
  • Security.framework
  • Foundation.framework

Usage

PonyDebugger's main entry points exist in the PDDebugger singleton.

PDDebugger *debugger = [PDDebugger defaultInstance];

To connect automatically to the PonyGateway on your LAN (via Bonjour):

[debugger autoConnect];

Or to open the connection to a specific host, for instance ws://localhost:9000/device:

[debugger connectToURL:[NSURL URLWithString:@"ws://localhost:9000/device"]];

To manually close the connection:

[debugger disconnect];

Network Traffic Debugging

To enable network debugging:

[debugger enableNetworkTrafficDebugging];

PonyDebugger inspects network data by injecting logic into NSURLConnectionDelegate classes. If you want PonyDebugger to automatically find these classes for you:

[debugger forwardAllNetworkTraffic];

This will swizzle methods from private APIs, so you should ensure that this only gets invoked in debug builds. To manually specify delegate classes:

[debugger forwardNetworkTrafficFromDelegateClass:[MyClass class]];

These methods should be invoked before the connection is opened.

Core Data Browser

PonyDebugger also allows you to browse your application's managed objects. First, enable Core Data debugging:

[debugger enableCoreDataDebugging];

To register a managed object context:

[debugger addManagedObjectContext:self.managedObjectContext withName:@"My MOC"];

View Hierarchy Debugging

To enable view hierarchy debugging:

[debugger enableViewHierarchyDebugging];

PonyDebugger will inject logic into UIView add/remove methods to monitor changes in the view hierarchy.

You can also set the attributes you want to see in the elements panel by passing an array of UIView key path strings

[debugger setDisplayedViewAttributeKeyPaths:@[@"frame", @"hidden", @"alpha", @"opaque"]];

PonyDebugger uses KVO to monitor changes in the attributes of all views in the hierarchy, so the information in the elements panel stays fresh.

Remote Logging

To enable remote logging:

[debugger enableRemoteLogging];

Example usage:

PDLog("Hello world!");               // This logs a simple string to the console output.
PDLogObjects(self);                  // This logs an introspectable version of "self" to the console.
PDLogObjects("My object:", object);  // Combination of text and introspectable object.

The repository contains a test application to demonstrate PonyDebugger's capabilities and usage.

Known Issues / Improvements

  • CoreData.framework must be linked, even if you do not use the Core Data browsing functionality.

  • iOS 5.1 and below: In certain cases, -[NSURLConnectionDataDelegate connection:willSendRequest:redirectResponse:] will never get called. PonyDebugger requires this call to know when the request was sent, and will warn you with a workaround that the timestamp is inaccurate.

    To fix the timestamp, make sure that Accept-Encoding HTTP header in your NSURLRequest is not set (by default, iOS will set it to gzip, deflate, which is usually adequate.

    AFNetworking users: if you subclass AFHTTPClient, call [self setDefaultHeader:@"Accept-Encoding" value:nil];.

Contributing

We’re glad you’re interested in PonyDebugger, and we’d love to see where you take it. Please read our contributing guidelines prior to submitting a Pull Request.

Some useful links:

Comments
  • Installations fails, missing  requirement pybonjour

    Installations fails, missing requirement pybonjour

    {vegas:~} $ curl -sk https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py | python - --ponyd-symlink=/usr/local/bin/ponyd ~/Library/PonyDebugger
    New python executable in /Users/user/Library/PonyDebugger/bin/python
    Installing setuptools................done.
    Installing pip..............done.
    Obtaining ponydebugger from git+https://github.com/square/PonyDebugger.git#egg=ponydebugger
      Updating ./Library/PonyDebugger/src/ponydebugger clone
      Running setup.py (path:/Users/user/Library/PonyDebugger/src/ponydebugger/setup.py) egg_info for package ponydebugger
    
      Installing extra requirements: 'egg'
    Downloading/unpacking tornado (from ponydebugger)
      Downloading tornado-3.1.1.tar.gz (374kB): 374kB downloaded
      Running setup.py (path:/Users/user/Library/PonyDebugger/build/tornado/setup.py) egg_info for package tornado
    
        warning: no previously-included files matching '_auto2to3*' found anywhere in distribution
    Downloading/unpacking pybonjour (from ponydebugger)
      Could not find any downloads that satisfy the requirement pybonjour (from ponydebugger)
      Some externally hosted files were ignored (use --allow-external pybonjour to allow).
    Cleaning up...
    No distributions at all found for pybonjour (from ponydebugger)
    Storing debug log for failure in /Users/user/.pip/pip.log
    Traceback (most recent call last):
      File "<stdin>", line 2462, in <module>
      File "<stdin>", line 946, in main
      File "<stdin>", line 1794, in after_install
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 542, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/Users/user/Library/PonyDebugger/bin/pip', 'install', '-U', '-e', 'git+https://github.com/square/PonyDebugger.git#egg=ponydebugger']' returned non-zero exit status 1
    
    bug 
    opened by torarnv 26
  • Installing ponyd fails due to pybonjour download failure

    Installing ponyd fails due to pybonjour download failure

    I'm using OS X 10.10 with the latest tools installed. When using the curl method to install ponyd and removing the -k parameter as per #125, I get the following error:

    Downloading/unpacking pybonjour (from ponydebugger)
      Could not find any downloads that satisfy the requirement pybonjour (from ponydebugger)
      Some externally hosted files were ignored (use --allow-external pybonjour to allow).
    Cleaning up...
    No distributions at all found for pybonjour (from ponydebugger)
    

    I've checked the file ~/Library/PonyDebugger/src/ponydebugger/scripts/_bootstrap_contents.py and it contains '--allow-external'.

    Any way to work around it?

    opened by mark-anders 19
  • Any plans to update to make it work with NSURLSession?

    Any plans to update to make it work with NSURLSession?

    I have moved over to use AFNetworking 2.0 which is built on NSURLSession.

    However, PonyDebugger only inspects the NSURLConnection requests so inspecting network traffic by AFNetworking when using NSURLSession isn't possible.

    Any plans to update to be compatible with NSURLSession?

    enhancement 
    opened by runmad 11
  • Integration with Cycript / runtime manipulation

    Integration with Cycript / runtime manipulation

    I was thinking about integration of Cycript (http://www.cycript.org) into this project which is a bridge between Objective-C and JavaScript and allow one to manipulate Objective-C runtime in running apps. I have already figured out a way to inject PonyDebugger into running 3rd-party apps (on a jailbroken device), which gives a great way to explore how the layout/UI of different apps is built. But it would certainly be nice to also have a way to access the Objective-C runtime and execute Cycript/Objective-C commands in the Chrome Developer Tools. What do you guys think? Is there any pointers on how to extend the console in Chrome Developer Tools with additional functionality?

    enhancement 
    opened by dtrukr 9
  • the librairy was blocking the build archive in xcode

    the librairy was blocking the build archive in xcode

    Hi,

    i changed the project to enable building IPA for ad-hoc distribution. I simply set the skip install to YES, and moved the headers from public to project

    now you can build an IPA when choosing "build for archive" in the xcode menu

    opened by alain57 8
  • Expanding triangles don't work in Google Chrome

    Expanding triangles don't work in Google Chrome

    The expanding triangles you see when inspecting a json response in the network inspector won't work in the current Google Chrome version (43).

    The console shows the following error:

    Uncaught TypeError: window.getComputedStyle(...).getPropertyCSSValue is not a function
    

    If found a similar problem with a fix for the problem.

    bug devtools 
    opened by Epskampie 7
  • Remote Logging and Object Inspection

    Remote Logging and Object Inspection

    EDIT: README done!

    This pull request adds remote logging via PDLog() and PDLogObjects() functions. It outputs the results into the Console tab of DevTools. This is the precursor to getting a functional REPL working for PonyDebugger.

    PDLog() works like NSLog(). PDLogObjects() takes NSObjects and outputs them with full inspection capability. So doing PDLogObjects(@"This is the app:", [UIApplication sharedApplication]) would show the full text, and the introspectable application singleton.

    Things that I did in this pull request:

    • Updated PDTwitterTest, since Twitter deprecated their public timeline endpoint. The test app only uses search functionality. However, this is going to be deprecated at some point, so we'll have to find an alternative eventually.
    • Added PDConsoleDomainController to handle console output.
    • Removed PDArrayContainer/PDDictionaryContainer, and replaced it with implementations using categories. It simplified the code that creates PDRuntimeRemoteObjects, though it does make NSSet slower since order is never stored anywhere.
    opened by wlue 7
  • Connect to Pony Gateway failing with

    Connect to Pony Gateway failing with "Debugger Closed" message

    Ran through the install instructions. Everything is working fine. But when I visit the gateway in the web browser it shows that my device is not connected. I used the example code in app delegate :

    PDDebugger *debugger = [PDDebugger defaultInstance];
    
    [debugger enableNetworkTrafficDebugging];
    [debugger forwardAllNetworkTraffic];
    [debugger connectToURL:[NSURL URLWithString:@"ws://localhost:9000/device"]];
    

    In the console log in xcode shortly after start the only message I see from the debugger is:

    Debugger closed

    Any ideas what's going on here?

    opened by travischoma 7
  • No matching distribution found for pybonjour (from ponydebugger)

    No matching distribution found for pybonjour (from ponydebugger)

    i use this command: sudo pip install -U -e git+https://github.com/square/PonyDebugger.git#egg=ponydebugger --allow-external pybonjour --allow-unverified pybonjour

    there is log: Collecting pybonjour (from ponydebugger) Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(65, 'No route to host'))': /p/pybonjour/ Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(65, 'No route to host'))': /p/pybonjour/ Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(65, 'No route to host'))': /p/pybonjour/ Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(65, 'No route to host'))': /p/pybonjour/downloads/list?can=1 Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(65, 'No route to host'))': /p/pybonjour/downloads/list?can=1 Could not find a version that satisfies the requirement pybonjour (from ponydebugger) (from versions: ) No matching distribution found for pybonjour (from ponydebugger)

    has anyone can help me?

    opened by cdoky 6
  • Fallback support for inactive socket

    Fallback support for inactive socket

    The main goal is to allow any user (even if he/she hasn't installed or forget to start ponyd) to be able to still debug any part of the code.

    The new few lines make a check about the socket activity and route the output between Ponydebugger and classic NSLog

    opened by matteocrippa 6
  • Make bootstrap-ponyd.py avilable

    Make bootstrap-ponyd.py avilable

    Current location: https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py does not exist, is there plan to have this available somewhere else.

    ponyd 
    opened by faisalil 5
  • Bump tzinfo from 1.2.5 to 1.2.10

    Bump tzinfo from 1.2.5 to 1.2.10

    Bumps tzinfo from 1.2.5 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    v1.2.7

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    TZInfo v1.2.7 on RubyGems.org

    v1.2.6

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.

    TZInfo v1.2.6 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    Version 1.2.7 - 2-Apr-2020

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    Version 1.2.6 - 24-Dec-2019

    • Timezone#strftime('%s', time) will now return the correct number of seconds since the epoch. #91.
    • Removed the unused TZInfo::RubyDataSource::REQUIRE_PATH constant.
    • Fixed "SecurityError: Insecure operation - require" exceptions when loading data with recent Ruby releases in safe mode.
    • Fixed warnings when running on Ruby 2.7. #106 and #111.
    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies ruby 
    opened by dependabot[bot] 0
  • Bump cocoapods-downloader from 1.2.2 to 1.6.3

    Bump cocoapods-downloader from 1.2.2 to 1.6.3

    Bumps cocoapods-downloader from 1.2.2 to 1.6.3.

    Release notes

    Sourced from cocoapods-downloader's releases.

    1.6.3

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1

    Enhancements
    • None.
    Bug Fixes
    • Fix "can't modify frozen string" errors when pods are integrated using the branch option
      buju77 #10920

    1.5.0

    ... (truncated)

    Changelog

    Sourced from cocoapods-downloader's changelog.

    1.6.3 (2022-04-01)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.2 (2022-03-28)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.1 (2022-03-23)

    Enhancements
    • None.
    Bug Fixes
    • None.

    1.6.0 (2022-03-22)

    Enhancements
    • None.
    Bug Fixes
    • Adds a check for command injections in the input for hg and git.
      orta #124

    1.5.1 (2021-09-07)

    Enhancements
    • None.

    ... (truncated)

    Commits
    • c03e2ed Release 1.6.3
    • f75bccc Disable Bazaar tests due to macOS 12.3 not including python2
    • 52a0d54 Merge pull request #128 from CocoaPods/validate_before_dl
    • d27c983 Ensure that the git pre-processor doesn't accidentally bail also
    • 3adfe1f [CHANGELOG] Add empty Master section
    • 591167a Release 1.6.2
    • d2564c3 Merge pull request #127 from CocoaPods/validate_before_dl
    • 99fec61 Switches where we check for invalid input, to move it inside the download fun...
    • 96679f2 [CHANGELOG] Add empty Master section
    • 3a7c54b Release 1.6.1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies ruby 
    opened by dependabot[bot] 0
  • [__NSCFURLLocalSessionConnection task] crash

    [__NSCFURLLocalSessionConnection task] crash

    iOS15.1

    • (void)PD__didReceiveResponse:(NSURLResponse *)response sniff:(BOOL)sniff rewrite:(BOOL)rewrite; this method ececute crashed; Detail: libc++abi: terminating with uncaught exception of type NSException dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/usr/lib/libMTLCapture.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib terminating with uncaught exception of type NSException *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFU
    opened by milesLQ 0
  • Can't install `ponyd` normally

    Can't install `ponyd` normally

    Refer to this method to install cannot be successful

    curl -sk https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py | \
      python - --ponyd-symlink=/usr/local/bin/ponyd ~/Library/PonyDebugger
    

    error logs :

     File "<stdin>", line 1806
        print "Symlink to %s already exists. (continuing anyways)" % symlink_target
                                                                 ^
    
    
    opened by kb100824 1
  • BigSur: So complex to install ponyd :/

    BigSur: So complex to install ponyd :/

    Why is it so complex to install ponyd? I'm thinking that the README is super outdated.

    1. Running curl -s https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py | \ python - --ponyd-symlink=/usr/local/bin/ponyd ~/Library/PonyDebugger

    yields nothing. No logs, no warnings, no errors. Nada.

    1. Running curl -O https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py python bootstrap-ponyd.py --help

    returns:

    (6) Could not resolve host: cloud.github.com
    /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'bootstrap-ponyd.py': [Errno 2] No such file or directory
    
    opened by glennposadas 3
Releases(v0.4.0)
  • v0.4.0(Aug 16, 2014)

    • Support NSURLSession requests for the Network Debugger. (@viteinfinite)
    • New test application that removes the AFNetworking dependency. (@viteinfinite)
    • Remove custom base64 implementation with Apple's built-in implementation. (@kyleve)
    • Add PodSpec for pulling the git repository directly. (@wlue)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Jan 2, 2014)

    • Fix only building active arch in debug. (@kyleve)
    • Fix view hierarchy debugging with complex key paths. (@ryanolsonk)
    • Fix crash in swizzled exchangeSubviewAtIndex:withSubviewAtIndex: (@ryanolsonk)
    • Fix for crash when having a library that looks like a NSURLConnectionDelegate (@peterwilli)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jan 2, 2014)

    • Remote Logging and Introspection (@wlue)
    • Request response pretty printing in Network Debugger (@davidapgar)
    • Minor bug fixes and improvements. (@jerryhjones, @conradev, @ryanolsonk)
    Source code(tar.gz)
    Source code(zip)
Owner
Square
Square
Profiling / Debugging assist tools for iOS. (Memory Leak, OOM, ANR, Hard Stalling, Network, OpenGL, Time Profile ...)

MTHawkeye Readme 中文版本 MTHawkeye is profiling, debugging tools for iOS used in Meitu. It's designed to help iOS developers improve development producti

meitu 1.4k Dec 29, 2022
A collection of tools for debugging, diffing, and testing your application's data structures.

Custom Dump A collection of tools for debugging, diffing, and testing your application's data structures. Motivation customDump diff XCTAssertNoDiffer

Point-Free 631 Jan 3, 2023
Set of easy to use debugging tools for iOS developers & QA engineers.

DBDebugToolkit DBDebugToolkit is a debugging library written in Objective-C. It is meant to provide as many easily accessible tools as possible while

Dariusz Bukowski 1.2k Dec 30, 2022
A lightweight, one line setup, iOS / OSX network debugging library! 🦊

Netfox provides a quick look on all executed network requests performed by your iOS or OSX app. It grabs all requests - of course yours, requests from

Christos Kasketis 3.4k Dec 28, 2022
iOS network debugging, like a wizard 🧙‍♂️

Start debugging iOS network calls like a wizard, without extra code! Wormholy makes debugging quick and reliable. What you can do: No code to write an

Paolo Musolino 2.1k Jan 8, 2023
An in-app debugging and exploration tool for iOS

FLEX FLEX (Flipboard Explorer) is a set of in-app debugging and exploration tools for iOS development. When presented, FLEX shows a toolbar that lives

FLEXTool 13.3k Dec 31, 2022
Dotzu In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.

Dotzu In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More. The debugger tool for iOS developer. Display logs, n

Remi ROBERT 1.8k Jan 3, 2023
Free macOS app for iOS view debugging.

Introduction You can inspect and modify views in iOS app via Lookin, just like UI Inspector in Xcode, or another app called Reveal. Official Website:h

Li Kai 575 Dec 28, 2022
Chisel is a collection of LLDB commands to assist debugging iOS apps.

Chisel Chisel is a collection of LLDB commands to assist in the debugging of iOS apps. [Installation • Commands • Custom Commands • Development Workfl

Facebook 8.9k Jan 6, 2023
Next generation debugging framework for iOS

Alpha is the idea of a next generation debugging framework for iOS applications. It combines multiple debugging tools built on top of a simple, unifie

Dal Rupnik 733 Oct 29, 2022
Droar is a modular, single-line installation debugging window

Droar is a modular, single-line installation debugging window. Overview The idea behind Droar is simple: during app deployment stages, adding quick ap

Myriad Mobile 55 Sep 24, 2022
Convenient debugging button.

FunnyButton Example 在平时开发,运行期间有时候想中途看一下某个视图或变量的信息,虽说打断点是可以查看,但有时候断点调试有时候会卡住好一会才能看到(尤其是大项目经常卡很久),极度影响效率。 基于这种情况,FunnyButton就是为了能够便捷调试的全局按钮,添加好点击事件,就能随时

健了个平_(:з」∠)_ 2 Sep 20, 2022
In-app console and debug tools for iOS developers

LocalConsole Welcome to LocalConsole! This Swift Package makes on-device debugging easy with a convenient PiP-style console that can display items in

Duraid Abdul 650 Jan 1, 2023
Automaticly display Log,Crash,Network,ANR,Leak,CPU,RAM,FPS,NetFlow,Folder and etc with one line of code based on Swift. Just like God opened his eyes

GodEye Automaticly display Log,Crash,Network,ANR,Leak,CPU,RAM,FPS,NetFlow,Folder and etc with one line of code based on Swift. Just like God opened hi

陈奕龙(子循) 3.7k Dec 23, 2022
a iOS network debug library, monitor HTTP requests

NetworkEye README 中文 NetworkEye,a iOS network debug library,monitor HTTP requests. It can be detected HTTP request include web pages, NSURLConnection,

coderyi 1.4k Dec 31, 2022
A swift network profiler built on top of URLSession.

By Xmartlabs SRL. Introduction Xniffer is a non-intrusive framework for intercepting outgoing requests and their responses between your app and any ex

xmartlabs 498 Dec 24, 2022
Customizable Console UI overlay with debug log on top of your iOS App

AEConsole Customizable Console UI overlay with debug log on top of your iOS App AEConsole is built on top of AELog, so you should probably see that fi

Marko Tadić 142 Dec 21, 2022
In-app design review tool to inspect measurements, attributes, and animations.

Hyperion Hyperion - In App Design Review Tool What is it? Hyperion is a hidden plugin drawer that can easily be integrated into any app. The drawer si

WillowTree, LLC 2k Dec 27, 2022
TouchInspector - a lightweight package that helps you visualize and debug touches on iOS and iPadOS

TouchInspector is a lightweight package that helps you visualize and debug touches on iOS and iPadOS.

Janum Trivedi 116 Jan 3, 2023