Git Product home page Git Product logo

ios-webkit-debug-proxy's Introduction

iOS WebKit Debug Proxy

The ios_webkit_debug_proxy (aka iwdp) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices.

Installation

iOS WebKit Debug Proxy works on Linux, MacOS & Windows.

MacOS

It's easiest to install with homebrew:

brew install ios-webkit-debug-proxy

Windows

It's easiest to install with scoop:

scoop bucket add extras
scoop install ios-webkit-debug-proxy

Note: you also need the latest version of iTunes installed.

Linux

Install dependencies available in apt repository:

sudo apt-get install autoconf automake libusb-dev libusb-1.0-0-dev libplist-dev libtool libssl-dev

Build and install dependencies that require more recent versions:

Build and install ios-webkit-debug-proxy:

git clone https://github.com/google/ios-webkit-debug-proxy.git
cd ios-webkit-debug-proxy

./autogen.sh
make
sudo make install

Usage

On Linux, you must run the usbmuxd daemon. The above install adds a /lib/udev rule to start the daemon whenever a device is attached.

To verify that usbmuxd can list your attached device(s), ensure that libimobiledevice-utils is installed and then run idevice_id -l.

Start the simulator or device

The iOS Simulator is supported, but it must be started before the proxy. The simulator can be started in XCode, standalone, or via the command line:

# Xcode changes these paths frequently, so doublecheck them
SDK_DIR="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs"
SIM_APP="/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator"
$SIM_APP -SimulateApplication $SDK_DIR/iPhoneSimulator8.4.sdk/Applications/MobileSafari.app/MobileSafari

Enable the inspector

Your attached iOS devices must have ≥1 open browser tabs and the inspector enabled via: Settings > Safari > Advanced > Web Inspector = ON

Start the proxy

ios_webkit_debug_proxy
  • --debug for verbose output.
  • --frontend to specify a frontend
  • --help for more options.
  • Ctrl-C to quit. Also, the proxy can be left running as a background process.

Using with DevTools

ios_webkit_debug_proxy can be used with many tools such as Chrome DevTools and Safari Web Inspector.

Chrome Devtools

In recent versions of Chrome and Safari there're major discrepancies between Chrome Remote Debugging Protocol and Webkit Inspector Protocol, which means that newer versions of Chrome DevTools aren't compatible with Safari.

Safari Web Inspector

You can use Safari Web Inspector extracted from Webkit sources, e.g. artygus/webkit-webinspector or HimbeersaftLP/ios-safari-remote-debug-kit.

Firefox DevTools via Valence

Another option is mozilla/valence which enables Firefox DevTools to be used with iOS.

Configuration

View and inspect debuggable tabs

Navigate to localhost:9221. You'll see a listing of all connected devices.

Click through to view tabs available on each, and click through again to open the DevTools for a tab.

Setting the DevTools UI URL

Chrome DevTools UI used as a default frontend:

http://chrome-devtools-frontend.appspot.com/static/27.0.1453.93/devtools.html

You can use the -f argument to specify different frontend source, like Chrome's local DevTools, a local Chromium checkout or another URL:

# examples:
ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
ios_webkit_debug_proxy -f ~/chromium/src/third_party/WebKit/Source/devtools/front_end/inspector.html
ios_webkit_debug_proxy -f http://foo.com:1234/bar/inspector.html

If you use -f chrome-devtools://devtools/bundled/inspector.html, you won't be able to click the links shown in localhost:9222 as Chrome blocks clicking these URLs. However, you can copy/paste them into the address bar.

Just the same, you can apply the appropriate port (9222) and page (2) values below.

chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/page/1

The -f value must end in ".html". Due to security reasons, https URLs will not work; use http or force-allow with the URL bar's shield icon. As of Chrome 45, the primary URL changed from devtools.html to inspector.html.

To disable the frontend proxy, use the --no-frontend argument.

Port assigment

The default configuration works well for most developers. The device_id-to-port assignment defaults to:

:9221 for the device list
:9222 for the first iOS device that is attached
:9223 for the second iOS device that is attached
...
:9322 for the max device

If a port is in use then the next available port will be used, up to the range limit.

The port assignment is first-come-first-serve but is preserved if a device is detached and reattached, assuming that the proxy is not restarted, e.g.:

  1. start the proxy
  2. the device list gets :9221
  3. attach A gets :9222
  4. attach B gets :9223
  5. detach A, doesn't affect B's port
  6. attach C gets :9224 (not :9222)
  7. reattach A gets :9222 again (not :9225)

The port assignment rules can be set via the command line with -c. The default is equivalent to:

ios_webkit_debug_proxy -c null:9221,:9222-9322

where "null" represents the device list. The following example restricts the proxy to a single device and port:

ios_webkit_debug_proxy -c 4ea8dd11e8c4fbc1a2deadbeefa0fd3bbbb268c7:9227

Troubleshooting

undefined reference to symbol 'log10@@GLIBC_2.2.5'
/usr/bin/ld: ios_webkit_debug_proxy-char_buffer.o: undefined reference to symbol 'log10@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line

Run this before make: ./configure LIBS="-lm"

error while loading shared libraries: libimobiledevice.so.6
ios_webkit_debug_proxy: error while loading shared libraries: libimobiledevice.so.6: cannot open shared object file: No such file or directory

Run sudo ldconfig

idevice_id not found

The idevice_id executable may be found as part of the libimobiledevice-utils package.

could not start com.apple.webinspector! success

Remove and rebuild libimobiledevice.

Could not connect to lockdownd (or doesn't work with iOS10+)

Could not connect to lockdownd. Exiting.: No such file or directory. Unable to attach inspector ios_webkit_debug_proxy

Check the device for a prompt to trust the connected computer. Choose "Trust" and try again.

Could not connect to lockdownd. Exiting.: Broken pipe. Unable to attach inspector

or

Could not connect to lockdownd, error code -<number>. Exiting.

Make sure you're using latest version of ios-webkit-debug-proxy

Inspectable pages list is empty for iOS >= 12.2

Make sure you're using latest version of ios-webkit-debug-proxy

Can not see Simulator
  • Make sure you started simulator before the proxy
  • Check that webinspector switch is enabled (Settings -> Safari -> Advanced -> Web Inspector)
  • Most likely simulator's web inspector daemon listens on ipv6 interface, check that you have ::1 localhost line in /etc/hosts
Building under Rosetta (OS X)

libimobildevice formulae depends on [email protected], which is key-only and requires the following env paths for the build

export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
If no luck so far...

Lastly, always try replugging in the USB cable.

IWDP Clients

JSON-formatted APIs are provided for programmatic clients.

See the examples/README for example clients: NodeJS, C, clientside JS, websocket and more.

Design

Alt overview

View the design document for an overview of the source layout and architecture.

License and Copyright

Google BSD license https://developers.google.com/google-bsd-license Copyright 2012 Google Inc. [email protected]

The proxy uses the following open-source packages:

ios-webkit-debug-proxy's People

Contributors

addyosmani avatar alebcay avatar antony avatar argelius avatar artygus avatar auchenberg avatar carsonmcdonald avatar cco3 avatar cyrus-and avatar djebbz avatar gingerbear avatar goleary avatar imurchie avatar jchuong avatar jonyfang avatar laguana avatar lbud avatar liangsdet avatar mattparrilla avatar nghiadhd avatar paulirish avatar pmeenan avatar sank8dalvi avatar sprt avatar ssynix avatar ticky avatar tobli avatar tsekityam avatar vincentbernat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios-webkit-debug-proxy's Issues

Can't build on Ubuntu 13.04

I just attempted to build ios-webkit-debug-proxy on Ubuntu 13.04, but got the following errors when running 'make':

make all-recursive
make[1]: Entering directory /home/kaplan/repos/ios-webkit-debug-proxy' Making all in src make[2]: Entering directory/home/kaplan/repos/ios-webkit-debug-proxy/src'
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT webinspector.o -MD -MP -MF .deps/webinspector.Tpo -c -o webinspector.o webinspector.c
webinspector.c: In function ‘wi_connect’:
webinspector.c:117:3: error: unknown type name ‘lockdownd_service_descriptor_t’
webinspector.c:117:44: warning: initialization makes integer from pointer without a cast [enabled by default]
webinspector.c:148:3: warning: passing argument 3 of ‘lockdownd_start_service’ from incompatible pointer type [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:82:19: note: expected ‘uint16_t ’ but argument is of type ‘int *’
webinspector.c:149:15: error: invalid type argument of ‘->’ (have ‘int’)
webinspector.c:155:37: error: invalid type argument of ‘->’ (have ‘int’)
make[2]: *
* [webinspector.o] Error 1
make[2]: Leaving directory /home/kaplan/repos/ios-webkit-debug-proxy/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/kaplan/repos/ios-webkit-debug-proxy'
make: *** [all] Error 2

Any ideas what I can do to get around this? I desperately need to debug some issues via Safari Mobile, don't have a Mac, and have had massive issues with Weinre staying failing. Any help would be appreciated.

Can't inspect pages on simulator

Hi,

Here's my environment:
  1. I installed ios-webkit-debug-proxy using brew without problem on my Mac.
  2. I have xcode insalled. I can start simulator without any issue.

Here's what I did:

  1. Start simulator. Pick iPhone Retina with iOS 6.
  2. Make sure that in the simulator, Safari's Advanced setting has Web Inspector "on".
  3. Start Safari in the simulator, and navigate to google.com.
  4. Start "ios-webkit-debug-proxy -d" (i.e. with debug on) on Mac.
  5. Start Chrome. And enter the URL "localhost:9221".
  6. I can see the simulator tagged as localhost:9222.
  7. Click the link "localhost:9222", and I see "www.google.com" listed as an inspectable page.
  8. I click "www.google.com", and got the page "No Data Received".
    8 In the console, I see that ios-webkit-debug-proxy's output says "send failed: Socket is not connected".

Am I missing something here? How can I correct this? Thanks.

aclocal: file '/usr/local/share/aclocal/lt~obsolete.m4' does not exist

Has anyone else experienced this issue? Not sure if its related to ios-webkit-debug-proxy or not.

I'm trying to install it on Mac OSX 10.9

➜  ~  brew install ios-webkit-debug-proxy
==> Downloading https://github.com/google/ios-webkit-debug-proxy/archive/1.3.tar
######################################################################## 100.0%
==> ./autogen.sh
aclocal
aclocal: error: aclocal: file '/usr/local/share/aclocal/lt~obsolete.m4' does not exist

Can't connect get select_port() failed Could not connect to lockdownd errors

I can't connect, I get this error running the following command. iPhone 5 connected with web inspector turned on.

ios_webkit_debug_proxy -c d5e07800839a0bdddc8d07ef931e9f878c3fc9:ios_webkit_debug_proxy -d

select_port() failed
Unable to create registry
ss.add_fd(3)
ss.recv fd=3 len=294
ss.recv fd=3 len=684
ss.add_server_fd(4)
Could not connect to lockdownd. Exiting.: Undefined error: 0
ss.remove_server_fd(4)
Unable to attach d5e07800839a0bc3dddc8d07ef931e9f878c3fc9 inspector

Not on brew repository

I tried to give it a try by brew install ios-webkit-debug-proxy but got Error: No available formula for ios-webkit-debug-proxy. Is it removed?

Device and page selection assumes localhost address

I'm running ios-webkit-debug-proxy in an Ubuntu VM so I can use it on Windows, and I've found that the web UI assumes that the pages will always be served from localhost.

It should be using the current request's hostname/IP address instead (it works fine if you edit the address yourself, but it's a pain when working with multiple tabs).

iOS simulator compatibility

It'd be nice if we could use chrome dev tools to test with the iOS simulator. It will be faster and more robust (less websocket disconnects)

send failed: Socket is not connected

Dont know whether this proxy will go to google's server or not,the debug of Chrome for android is blocked by GWF in China,and now this proxy give me "send failed: Socket is not connected" when I click a page to debug,I can view the device list and see the pages,but can not debug it,if the proxy go to google's server,then it's blocked by GWF too ;(

Segfault while starting up

During the startup of the proxy it segfaults. I attached the debug output.
The host system is Ubuntu 13.10. If more information is needed, please mail me.
The idevice is an iPad mini retina with iOS 7.0.4 running.

pieter@Ares:~/Code/ios-webkit-debug-proxy$ idevice_id -l
794815b****
pieter@Ares:~/Code/ios-webkit-debug-proxy$ ios_webkit_debug_proxy -d
ss.add_server_fd(3)
ss.add_fd(4)
ss.add_server_fd(5)
ss.remove_server_fd(5)
ss.recv fd=4 len=932
ss.add_server_fd(5)
Segmentatiefout (geheugendump gemaakt)
pieter@Ares:~/Code/ios-webkit-debug-proxy$ 

Use an updated version of DevTools

Is it possible to use an updated version of DevTools, the one contained within Blink (Source/devtools) for example? Currently, inspecting a page at http://localhost:9222/devtools/devtools.html?host=localhost:9222&page=1 using ios-webkit-debug-proxy presents a much older version of the Developer Tools.

Remote.evaluate request with large expression (e.g. 7500 characters or more) is causing a web socket disconnect

When attempting to send a large javascript expression I noticed that I keep getting disconnected.

This works fine:
{"id": 1, "method": "Runtime.evaluate", "params": {"expression": " document.title", "objectGroup": "console", "returnByValue": true }}

This works fine:
{"id": 1, "method": "Runtime.evaluate", "params": {"expression": "(function(name){console.info('printed: ' + name)})('small number of characters')", "objectGroup": "console", "returnByValue": true }}

This fails:
{"id": 1, "method": "Runtime.evaluate", "params": {"expression": "(function(name){console.info('printed: ' + name)})('Add more than 7500 characters here.....etc.(didn't want to flood this ticket :))')", "objectGroup": "console", "returnByValue": true }}

Running this on the console gives the same result:
http://localhost:27753/devtools/devtools.html?host=localhost:27753&page=1

We are attempting to send a compressed javascript library (e.g. the webdriver find_element library as part of the request) which contains more than 7500 characters.

Any suggestions on how this could be resolved?

Thanks,

Sergio

Proxy unable to connect to iOS7 lockdownd

screen shot 2013-09-20 at 9 57 24 pm

This is what I see when I run the proxy. Everything is fully updated (Xcode 5, etc.).

screen shot 2013-09-20 at 10 00 35 pm

This is what I see when I go to to http://localhost:9221 (which I assume is correct). That link takes me to a full-screen inspector view, but styles don't populate in the Styles pane on the right and nothing populates in the Timeline when reloading the page in the Simulator window. The rendered source does load in the Inspector and corresponding elements highlight correctly in the Simulator when hovering in Inspector, so I presume everything is getting hung up on the problem with the proxy.

Any ideas on what could be wrong?

Installation instruction for Mac OS X 10.9 Mavericks?

brew install ios-webkit-debug-proxy fails to install cmake.

brew doctor tells me:

Warning: You are using Mac OS X 10.9.
We do not yet provide support for this (unreleased) version.

Can someone explain step-by-step how to install all necessary dependencies manually to build the project from the source?

Problems with RequestAnimationFrame

I don't know how best to describe this issue, but it seems that there's a mismatch in the expected name of requestAnimationFrame events which breaks the timeline.

I was able to "fix" this problem by overwriting some WebkitInspector code; see the // BEGIN comments

WebInspector.TimelinePanel.prototype._innerAddRecordToTimeline = function(record, parentRecord)
{
    var connectedToOldRecord = false;
    var recordTypes = WebInspector.TimelineAgent.RecordType;

    if (record.type === recordTypes.RegisterAnimationFrameCallback) {
        this._registeredAnimationCallbackRecords[record.data["id"]] = record;
        return;
    }

    if (record.type === recordTypes.MarkDOMContent || record.type === recordTypes.MarkLoad)
        parentRecord = null;
    else if (parentRecord === this._rootRecord ||
    record.type === recordTypes.ResourceReceiveResponse ||
    record.type === recordTypes.ResourceFinish ||
    record.type === recordTypes.ResourceReceivedData) {
        var newParentRecord = this._findParentRecord(record);
        if (newParentRecord) {
            parentRecord = newParentRecord;
            connectedToOldRecord = true;
        }
    }

    var children = record.children;
    var scriptDetails;
    if (record.data && record.data["scriptName"]) {
        scriptDetails = {
            scriptName: record.data["scriptName"],
            scriptLine: record.data["scriptLine"]
        }
    }
    ;

    if ((record.type === recordTypes.TimerFire || record.type === recordTypes.FireAnimationFrameEvent) && children && children.length) {
        var childRecord = children[0];
        if (childRecord.type === recordTypes.FunctionCall) {
            scriptDetails = {
                scriptName: childRecord.data["scriptName"],
                scriptLine: childRecord.data["scriptLine"]
            };
            children = childRecord.children.concat(children.slice(1));
        }
    }

    // BEGIN HACKY FIX
    if (record.type === "RequestAnimationFrame") {
      record.type = "RegisterAnimationFrameCallback";
    }

    if (record.type === "FireAnimationFrame") {
      record.type = "FireAnimationFrameEvent";
    }
    // END HACKY FIX


    var formattedRecord = new WebInspector.TimelinePanel.FormattedRecord(record, parentRecord, this, scriptDetails);

    if (record.type === recordTypes.MarkDOMContent || record.type === recordTypes.MarkLoad) {
        this._timeStampRecords.push(formattedRecord);
        return;
    }

    ++this._rootRecord._allRecordsCount;
    formattedRecord.collapsed = (parentRecord === this._rootRecord);

    var childrenCount = children ? children.length : 0;
    for (var i = 0; i < childrenCount; ++i)
        this._innerAddRecordToTimeline(children[i], formattedRecord);

    formattedRecord._calculateAggregatedStats(this.categories);

    if (connectedToOldRecord) {
        record = formattedRecord;
        do {
            var parent = record.parent;
            parent._cpuTime += formattedRecord._cpuTime;
            if (parent._lastChildEndTime < record._lastChildEndTime)
                parent._lastChildEndTime = record._lastChildEndTime;
            for (var category in formattedRecord._aggregatedStats)
                parent._aggregatedStats[category] += formattedRecord._aggregatedStats[category];
            record = parent;
        } while (record.parent);
    } else
    if (parentRecord !== this._rootRecord)
        parentRecord._selfTime -= formattedRecord.endTime - formattedRecord.startTime;


    if (record.type === recordTypes.TimeStamp)
        this._timeStampRecords.push(formattedRecord);
};

ios_webkit_debug_proxy(44182) malloc: *** error for object 0x7fc37ac0b250

Hi there,

The following error happens as I'm running the ios_webkit_debug_proxy for a little while on:

chrome-devtools://devtools/devtools.html?host=localhost:9222&page=2

The error is the following:

ios_webkit_debug_proxy(44182) malloc: *** error for object 0x7fc37ac0b250: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

And the debugging window says the following:

Detached from the target

Remote debugging has been terminated with reason: websocket_closed.
Please re-attach to the new target.

Latest master branch won't compile

I just pulled, ran auto, config, and make steps, make gives errors including:

ios_webkit_debug_proxy.c:1507:17: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
         asprintf(&href, " href=\"http://%s:%d/\"",
                 ^
ios_webkit_debug_proxy.c:1510:15: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
       asprintf(&s,
               ^
ios_webkit_debug_proxy.c: In function ‘iwdp_ipages_to_text’:
ios_webkit_debug_proxy.c:1704:15: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
       asprintf(&href, "%s?host=%s:%d&page=%d", frontend_url,
               ^
ios_webkit_debug_proxy.c:1709:15: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
       asprintf(&s, 
               ^
ios_webkit_debug_proxy.c:1724:15: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
       asprintf(&s,
               ^
ios_webkit_debug_proxy.c:1743:13: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
     asprintf(&header,
             ^
ios_webkit_debug_proxy.c:1749:13: error: ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Werror=unused-result]
     asprintf(&footer, "</ol>%s</body></html>", (is_chrome_dev ?
             ^
cc1: all warnings being treated as errors
make[2]: *** [ios_webkit_debug_proxy.o] Error 1
make[2]: Leaving directory```

Problems building on Linux Ubuntu 12.04

Hi there,

been having problems with the build on my machine.
firstly, I needed to install libimobiledevice-dev, which is not on your instructions and is needed.

now it's giving me the following error:
/usr/include/libimobiledevice/installation_proxy.h:31:18: fatal error: glib.h: No such file or directory

any help, please?

cheers in advance

Segmentation fault: 11

When running examples/wdp_client.js I'm cccasionally seeing Segmentation fault: 11 after Safari has loaded the page.

Not had a chance to dig in at any depth yet.

Test environment is iPad 2 running iOS 6.1

Running on OSX 10.8 build was using the formula @janl provided in #1 (comment)

What determines whether a device is inspectable?

I've got an iPad, iPhone and simulator (all iOS) hooked up to the proxy.

I can inspect Safari on the iPad and simulator but although the iPhone is listed by the proxy there is no link to inspect it.

Any ideas why this would happen?

(I'm assuming it may not actually be a proxy issue and the device doesn't show up at all in desktop Safari, so trying to debug that at the moment)

7.0.4

element -> style box go empty

Proxy unable to handle multiple consecutive requests

We are are making multiple requests and finding that the proxy isn't always able to handle them accordingly. We dont received a response and the web socket connection is closed.

When running the proxy in debug mode we do see the response coming back from the device (webInspector protocol) however this is never returned by the proxy to us.

If you would like to see this in action please find a test example here:

  1. Unpack the zip file
  2. Run sudo npm install ws and sudo npm install optimist in the unpacked folder.
  3. Attach an iOS device and open mobile safari
  4. Start the proxt "ios_webkit_debug_proxy -c :27752-27758 -d"
  5. Run the wdp_client.js test (multiple times).

The test contains 5 requests, which when run repeatedly sometimes get executed and sometimes the web socket is disconnected.

Any ideas why this is happening?

Regards,

Sergio

Segmentation fault when using libimobiledevice 1.1.5

Hi,

as discussed in #2, I'm reporting this issue as a separate one. The build was successful but when attaching my iPhone 5, ios-webkit-debug-proxy crashes with a segfault.

This is using OSX 10.8.3 and building manually from master (not the brew formula - that also fails though).

Downgrading to libimobiledevice to 1.1.4 "fixes" it.

WebSocket frame length too large when requesting cached items

When requesting network responses which do not have a content-length, such as network responses returned from cache, the WebSocket response gives a ridiculous content-length (in this case, nearly a Petabyte - but it varies).

WebSocket connection to 'ws://192.168.7.82:9222/devtools/page/2' failed: WebSocket frame length too large: 898872230752645 bytes

As I can't see any code wherein ios-webkit-debug-proxy reads response headers, I can only presume that this is an issue with Safari's inspector WebSocket implementation, and that the limitation is suppressed when Safari sends data over USB.

This can be reproduced by following these steps;

  1. Load any page which uses cachable resources (A web page using jQuery from Google's CDN is a good example)
  2. Open the inspector (A) to monitor network requests
  3. Open your browser's inspector (B) on the inspector page (A) which is pointed at the device
  4. Reload the page
  5. Click on the cached resource in inspector A (and note that the response headers do not include content-length)
  6. Click "Preview" or "Response"
  7. A WebSocket error such as the one above appears in the browser's error console (inspector B)

Is this likely to be something that can be fixed?

Chrome iOS remote debugging?

It seems that the web views for the Chrome browser do not show up on the proxy.

Does the chrome browser on iOS support remote debugging and if so does it require the web inspector protocol or the webkit protocol?

Would it be possible to make these web view(s) available to the proxy as well?

Thanks,

Sergio

Cannot find module 'expect.js'

make test under ios-webkit-debug-proxy-1.3/examples/node_modules/ws/

and it comes out error: could not find expect.js

snapshot is as follows:

jimmykao@beckie-Aspire-M3400:/work/ios-webkit-debug-proxy-1.3/examples/node_modules/ws$ ls
bench binding.gyp doc History.md lib Makefile package.json src
bin builderror.log examples index.js libpeerconnection.log node_modules README.md test
jimmykao@beckie-Aspire-M3400:
/work/ios-webkit-debug-proxy-1.3/examples/node_modules/ws$ make test
make[1]: Entering directory `/home/jimmykao/work/ios-webkit-debug-proxy-1.3/examples/node_modules/ws'

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'expect.js'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object. (/home/jimmykao/work/ios-webkit-debug-proxy-1.3/examples/node_modules/ws/test/Receiver.hixie.test.js:2:14)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at /usr/local/lib/node_modules/mocha/lib/mocha.js:152:27
at Array.forEach (native)
at Mocha.loadFiles (/usr/local/lib/node_modules/mocha/lib/mocha.js:149:14)
at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:306:31)
at Object. (/usr/local/lib/node_modules/mocha/bin/_mocha:339:7)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
at EventEmitter._tickCallback (node.js:192:40)
make[1]: *** [run-tests] Error 1
make[1]: Leaving directory `/home/jimmykao/work/ios-webkit-debug-proxy-1.3/examples/node_modules/ws'
make: *** [test] Error 2

dl_client could not reattach idevice

I have built ios-webkit-debug-proxy and try to run dl_client to see on_attach and on_detach iphone 3Gs. After I plug in the usb cable and run dl_client, I see on_attach together with its device id and number. Same thing for on_detach. Then, I want to see how it reattach idevice. So, I unplug the usb cable and re-plug in. But, dl_client does nothing. How could I reattach idevice and see dl_client works?

root@beckie-Aspire-M3400:~/ios-webkit-debug-proxy-1.3/examples# ./dl_client
on_attach a0a1a3ee9708777fcd7f052b8c849f1d5d9b0fb6 1

on_detach a0a1a3ee9708777fcd7f052b8c849f1d5d9b0fb6 1

by the way, I use busybox to run dl_client
root@beckie-Aspire-M3400:~/ios-webkit-debug-proxy-1.3# uname -a
Linux beckie-Aspire-M3400 3.2.0-38-generic #61-Ubuntu SMP Tue Feb 19 12:18:21 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Appreciate any help.

Can't build on Ubuntu 13.10 x64

skilex@tinyaspire:~/dev/ios-webkit-debug-proxy$ make
make all-recursive
make[1]: Entering directory /home/skilex/dev/ios-webkit-debug-proxy' Making all in src make[2]: Entering directory/home/skilex/dev/ios-webkit-debug-proxy/src'
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT ios_webkit_debug_proxy_main.o -MD -MP -MF .deps/ios_webkit_debug_proxy_main.Tpo -c -o ios_webkit_debug_proxy_main.o ios_webkit_debug_proxy_main.c
mv -f .deps/ios_webkit_debug_proxy_main.Tpo .deps/ios_webkit_debug_proxy_main.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT base64.o -MD -MP -MF .deps/base64.Tpo -c -o base64.o base64.c
mv -f .deps/base64.Tpo .deps/base64.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT char_buffer.o -MD -MP -MF .deps/char_buffer.Tpo -c -o char_buffer.o char_buffer.c
mv -f .deps/char_buffer.Tpo .deps/char_buffer.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT device_listener.o -MD -MP -MF .deps/device_listener.Tpo -c -o device_listener.o device_listener.c
mv -f .deps/device_listener.Tpo .deps/device_listener.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT hash_table.o -MD -MP -MF .deps/hash_table.Tpo -c -o hash_table.o hash_table.c
mv -f .deps/hash_table.Tpo .deps/hash_table.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT ios_webkit_debug_proxy.o -MD -MP -MF .deps/ios_webkit_debug_proxy.Tpo -c -o ios_webkit_debug_proxy.o ios_webkit_debug_proxy.c
ios_webkit_debug_proxy.c: In function ‘iwdp_on_list_request’:
ios_webkit_debug_proxy.c:661:30: error: ‘fe_proto’ undeclared (first use in this function)
ios_webkit_debug_proxy.c:661:30: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [ios_webkit_debug_proxy.o] Error 1
make[2]: Leaving directory /home/skilex/dev/ios-webkit-debug-proxy/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/skilex/dev/ios-webkit-debug-proxy'
make: *** [all] Error 2

Getting invalid packet on Ubuntu 13.04 (raring)

This is the error message from the console:

Invalid packet  
00 00 01 6E 00 00 01 6F 62 70 6C 69 73 74 30 30 D1 01 02  ...n...obplist00...
 5F 10 12 57 49 52 46 69 6E 61 6C 4D 65 73 73 61 67 65 4B  _..WIRFinalMessageK
 65 79 4F 11 01 25 62 70 6C 69 73 74 30 30 D2 01 02 03 04  eyO..%bplist00.....
 5A 5F 5F 73 65 6C 65 63 74 6F 72 5A 5F 5F 61 72 67 75 6D  Z__selectorZ__argum
 65 6E 74 5F 10 19 5F 72 70 63 5F 61 70 70 6C 69 63 61 74  ent_.._rpc_applicat
 69 6F 6E 53 65 6E 74 44 61 74 61 3A D3 05 06 07 08 09 0A  ionSentData:.......
 5F 10 1B 57 49 52 41 70 70 6C 69 63 61 74 69 6F 6E 49 64  _..WIRApplicationId
 65 6E 74 69 66 69 65 72 4B 65 79 5F 10 11 57 49 52 4D 65  entifierKey_..WIRMe
 73 73 61 67 65 44 61 74 61 4B 65 79 5F 10 11 57 49 52 44  ssageDataKey_..WIRD
 65 73 74 69 6E 61 74 69 6F 6E 4B 65 79 5F 10 16 63 6F 6D  estinationKey_..com
 2E 61 70 70 6C 65 2E 6D 6F 62 69 6C 65 73 61 66 61 72 69  .apple.mobilesafari
 4F 10 15 7B 22 72 65 73 75 6C 74 22 3A 7B 7D 2C 22 69 64  O..{"result":{},"id
 22 3A 31 30 7D 5F 10 3A 32 34 38 61 65 61 61 37 32 32 36  ":10}_.:248aeaa7226
 64 30 65 63 36 2D 65 38 37 35 63 38 31 2D 34 31 38 61 2D  d0ec6-e875c81-418a-
 38 39 31 65 2D 35 63 61 61 31 32 30 33 34 65 65 64 39 64  891e-5caa12034eed9d
 65 33 32 33 63 66 37 38 30 08 0D 18 23 3F 46 64 78 8C A5  e323cf780...#?Fdx..
 BD 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00 0B 00 00  ...................
 00 00 00 00 00 00 00 00 00 00 00 00 00 FA 00 08 00 0B 00  ...................
 20 00 00 00 00 00 00 02 01 00 00 00 00 00 00 00 03 00 00   ..................
 00 00 00 00 00 00 00 00 00                                .........

Steps to reproduce:

  • Attached iPhone 5, iOS version 6.1 (10B143)
  • Started usbmuxd
  • Started ios_webkit_debug_proxy
  • Went to device list, clicked on my iPhone, clicked on the page that was open
  • Result: debugger shows up but shows no content, error shows up in console

Operating system: Ubuntu 13.04, reverted commit to make it compile (issue #32)

Trouble building on mac

In advance - sorry this isn't about this project code, but actually just getting to build - hoping someone will still help.

I'm on a Mac. Used sudo port install libplist which works, and I can see various files in /opt/local/include/plist including plist.h.

I go through the build instructions for this project, but it fails at the make with:

» make                                                                                                                                          
make  all-recursive
Making all in src
gcc -DHAVE_CONFIG_H -I. -I..  -I../include     -g -O2 -MT device_listener.o -MD -MP -MF .deps/device_listener.Tpo -c -o device_listener.o device_listener.c
device_listener.c:17:25: error: plist/plist.h: No such file or directory
device_listener.c: In function ‘dl_start’:
device_listener.c:91: error: ‘plist_t’ undeclared (first use in this function)
device_listener.c:91: error: (Each undeclared identifier is reported only once
device_listener.c:91: error: for each function it appears in.)
device_listener.c:91: error: expected ‘;’ before ‘dict’
device_listener.c:92: error: ‘dict’ undeclared (first use in this function)
device_listener.c: In function ‘dl_recv_packet’:
device_listener.c:151: error: ‘plist_t’ undeclared (first use in this function)
device_listener.c:151: error: expected ‘;’ before ‘dict’
device_listener.c:152: error: ‘dict’ undeclared (first use in this function)
device_listener.c:155: error: expected ‘;’ before ‘node’
device_listener.c:156: error: ‘node’ undeclared (first use in this function)
device_listener.c:156: error: ‘PLIST_STRING’ undeclared (first use in this function)
device_listener.c:165: error: expected ‘;’ before ‘node’
device_listener.c:173: error: expected ‘;’ before ‘props’
device_listener.c:174: error: ‘props’ undeclared (first use in this function)
device_listener.c:176: error: expected ‘;’ before ‘node’
device_listener.c:198: error: expected ‘;’ before ‘node’
make[2]: *** [device_listener.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Any tips?

Also - very pleased this project was released - my company was/is working on something very similar, but we couldn't get past the USB transport stage: https://github.com/leftlogic/remote-debug

Segmentation fault if an action is taken from the developer tools while device is locked

The program immediately segfaults if you do the following process;

  1. Connect device, start ios_webkit_debug_proxy
  2. Open debugger to an open page
  3. Lock the device or allow it to lock automatically
  4. Attempt to use the debugger

Running on Ubuntu 13.04 with libplist 1.10, libusbmuxd 1.0.8 and libimobiledevice 1.1.5.

I get the impression from the readme that ios_webkit_debug_proxy should be able to start with no devices attached, and survive disconnections and reconnections. Neither appear to be the case in the environment I'm using it in.

running make gives invalid type argument and unknown type name error

Hi,

I have corrected the include paths for glib-2.0 from /usr/include and /usr/lib/i386-linux-gnu/glib-2.0/include/

make logs:

make all-recursive
make[1]: Entering directory /home/ankitgarg/git/ios-webkit-debug-proxy' Making all in src make[2]: Entering directory/home/ankitgarg/git/ios-webkit-debug-proxy/src'
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O0 -I/usr/include/glib-2.0/ -I/usr/lib/i386-linux-gnu/glib-2.0/include/ -MT webinspector.o -MD -MP -MF .deps/webinspector.Tpo -c -o webinspector.o webinspector.c
webinspector.c: In function ‘wi_connect’:
webinspector.c:117:3: error: unknown type name ‘lockdownd_service_descriptor_t’
webinspector.c:117:44: warning: initialization makes integer from pointer without a cast [enabled by default]
webinspector.c:148:3: warning: passing argument 3 of ‘lockdownd_start_service’ from incompatible pointer type [enabled by default]
/usr/include/libimobiledevice/lockdown.h:82:19: note: expected ‘uint16_t ’ but argument is of type ‘int *’
webinspector.c:149:15: error: invalid type argument of ‘->’ (have ‘int’)
webinspector.c:155:37: error: invalid type argument of ‘->’ (have ‘int’)
make[2]: *
* [webinspector.o] Error 1
make[2]: Leaving directory /home/ankitgarg/git/ios-webkit-debug-proxy/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/ankitgarg/git/ios-webkit-debug-proxy'
make: *** [all] Error 2

gcc configuration:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

Proxy returns an empty array of tabs for a few seconds after launch

  1. Have Safari running on a tethered iOS device.
  2. Launch the proxy with -c :9222 (not sure if -c matters).
  3. Quickly (as in -- scripted) make requests to http://localhost:9222/json.

A few first requests will return "[]", then it will begin returning a correct list of tabs.

I suspect it's a race between the HTTP requests and the proxy's handshake with the device.

Could the proxy hold HTTP responses until the handshake is done? The requests would just take a few seconds when made right after launching the proxy.

Chrome cannot connect - everything else looks fine

I've got all the necessary items installed for this to work. I get no errors anywhere, except when I actually try to go to port 9221. I get a "Google Chrome could not connect to localhost:9221" error. Here's an image of my console, the ios simulator, and my web browser: http://i.imgur.com/QawXsBN.png.

I've tried looking around, but I can't find anything. Can anyone figure out what might be wrong?

can't inpsect pages

I'm using os x 10.9, after brew install ios_webkit_debug_proxy

I can list my devices on port 9221
but can't open inspect page on my ipad

iOS Devices:
localhost:9222 - Sean's iPad

But port 9222 fail to load Oops! Google Chrome could not connect to localhost:9222

wi_script example has memory leak problem

I have adopt wi_script example into my project, and find out problem of possible memory leak. So, I go back to check original example, it also approves my guess.

I use valgrind together with wi_script. Result is as followings:

ios-webkit-debug-proxy/examples$ valgrind --leak-check=full ./wi_script

==17662== Memcheck, a memory error detector
==17662== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==17662== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==17662== Command: ./wi_script
==17662==
app com.apple.mobilesafari
page 1: http://apps.asponline.com.tw/prjtest/beckiboxdocking/docking_mode.html
send[0] {"id":1,"method":"Page.navigate","params":{"url":"http://www.google.com/"}}
Recv {"result":{},"id":1}
Recv {"method":"Profiler.resetProfiles"}
^CExiting...
==17662==
==17662== HEAP SUMMARY:
==17662== in use at exit: 172,058 bytes in 1,177 blocks
==17662== total heap usage: 18,488 allocs, 17,311 frees, 2,456,451 bytes allocated
==17662==
==17662== 4 bytes in 1 blocks are definitely lost in loss record 4 of 105
==17662== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==17662== by 0x40B112B: lockdownd_start_service (in /usr/lib/i386-linux-gnu/libimobiledevice.so.4.0.1)
==17662== by 0x804A551: wi_connect (webinspector.c:149)
==17662== by 0x8049320: main (wi_script.c:166)
==17662==
==17662== 23 bytes in 1 blocks are definitely lost in loss record 34 of 105
==17662== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==17662== by 0x4142507: strdup (strdup.c:42)
==17662== by 0x80497D1: on_applicationSentListing (wi_script.c:119)
==17662== by 0x804C12D: wi_recv_applicationSentListing (webinspector.c:612)
==17662== by 0x804C43F: wi_recv_msg (webinspector.c:776)
==17662== by 0x804C629: wi_recv_packet (webinspector.c:809)
==17662== by 0x804C6C3: wi_recv_loop (webinspector.c:847)
==17662== by 0x804C75E: wi_on_recv (webinspector.c:875)
==17662== by 0x80493AF: main (wi_script.c:190)
==17662==
==17662== 41 bytes in 1 blocks are definitely lost in loss record 73 of 105
==17662== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==17662== by 0x4142507: strdup (strdup.c:42)
==17662== by 0x40AD5C9: idevice_get_udid (in /usr/lib/i386-linux-gnu/libimobiledevice.so.4.0.1)
==17662== by 0x40AD646: idevice_connect (in /usr/lib/i386-linux-gnu/libimobiledevice.so.4.0.1)
==17662== by 0x804A582: wi_connect (webinspector.c:156)
==17662== by 0x8049320: main (wi_script.c:166)
==17662==
==17662== LEAK SUMMARY:
==17662== definitely lost: 68 bytes in 3 blocks
==17662== indirectly lost: 0 bytes in 0 blocks
==17662== possibly lost: 0 bytes in 0 blocks
==17662== still reachable: 171,990 bytes in 1,174 blocks
==17662== suppressed: 0 bytes in 0 blocks
==17662== Reachable blocks (those to which a pointer was found) are not shown.
==17662== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==17662==
==17662== For counts of detected and suppressed errors, rerun with: -v
==17662== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)

Compilation error - unknown type "lockdown_service_descriptor_t"

Still experiencing problems with compilation. All necessary libraries are installed.

skilex@tinyaspire:~/dev/ios-webkit-debug-proxy$ make
make all-recursive
make[1]: Entering directory /home/skilex/dev/ios-webkit-debug-proxy' Making all in src make[2]: Entering directory/home/skilex/dev/ios-webkit-debug-proxy/src'
gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -MT webinspector.o -MD -MP -MF .deps/webinspector.Tpo -c -o webinspector.o webinspector.c
webinspector.c: In function ‘wi_connect’:
webinspector.c:117:3: error: unknown type name ‘lockdown_service_descriptor_t’
webinspector.c:117:43: warning: initialization makes integer from pointer without a cast [enabled by default]
webinspector.c:118:3: error: unknown type name ‘lockdown_client_t’
webinspector.c:118:30: warning: initialization makes integer from pointer without a cast [enabled by default]
webinspector.c:130:9: warning: passing argument 2 of ‘lockdownd_client_new_with_handshake’ from incompatible pointer type [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:75:19: note: expected ‘struct lockdownd_client_private *’ but argument is of type ‘int *’
webinspector.c:137:7: warning: passing argument 1 of ‘lockdownd_get_value’ makes pointer from integer without a cast [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:79:19: note: expected ‘lockdownd_client_t’ but argument is of type ‘int’
webinspector.c:143:7: warning: passing argument 1 of ‘lockdownd_get_value’ makes pointer from integer without a cast [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:79:19: note: expected ‘lockdownd_client_t’ but argument is of type ‘int’
webinspector.c:148:3: warning: passing argument 1 of ‘lockdownd_start_service’ makes pointer from integer without a cast [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:82:19: note: expected ‘lockdownd_client_t’ but argument is of type ‘int’
webinspector.c:148:3: warning: passing argument 3 of ‘lockdownd_start_service’ from incompatible pointer type [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:82:19: note: expected ‘uint16_t *’ but argument is of type ‘int *’
webinspector.c:149:15: error: invalid type argument of ‘->’ (have ‘int’)
webinspector.c:155:37: error: invalid type argument of ‘->’ (have ‘int’)
webinspector.c:162:5: warning: passing argument 1 of ‘lockdownd_client_free’ makes pointer from integer without a cast [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:76:19: note: expected ‘lockdownd_client_t’ but argument is of type ‘int’
webinspector.c:163:12: warning: assignment makes integer from pointer without a cast [enabled by default]
webinspector.c:200:3: warning: passing argument 1 of ‘lockdownd_client_free’ makes pointer from integer without a cast [enabled by default]
In file included from webinspector.c:22:0:
/usr/include/libimobiledevice/lockdown.h:76:19: note: expected ‘lockdownd_client_t’ but argument is of type ‘int’
make[2]: *
* [webinspector.o] Error 1
make[2]: Leaving directory /home/skilex/dev/ios-webkit-debug-proxy/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/skilex/dev/ios-webkit-debug-proxy'
make: *** [all] Error 2

RFE: Persist console log across pages

While we currently have the ability to persist network request tracking across pages:
bottom toolbar network panel

There does not appear to be a way to do the same for the console log:
bottom toolbar console panel

This would be a very useful addition.

Invalid message _rpc_applicationSendData

Tried getting remote debugging working on my iphone 4. Running into this error:

Invalid message _rpc_applicationSentData:
  <dict>
    <key>WIRApplicationIdentifierKey</key>
    <string>com.apple.mobilesafari</string>
    <key>WIRMessageDataKey</key>
    <data>...</data>
    <key>WIRDestinationKey</key>
    <string>E5328453-82A9-46BB-ADF5-C551045E76B3</string>
  </dict>

Any ideas?

Libimobile working, ios-webkit-debug not doing anything - on 7.1 device.

I updated my libimobiledevice by compiling it earlier, now I'm able to see and view files from the iPad 7.1, but when I run libimobiledevice, it returns with no error message.

strace ios_webkit_debug_proxy gives:
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=23054, si_uid=1000} ---
+++ killed by SIGPIPE +++

Can't use chrome dev tools profiler with ios-webkitdebug-proxy

I was not able to get chrome dev tools profiler working when using Ipad device or using simulator. I couldn't find any issue related to profiler working or not working. Just want to make sure that this feature is not supposed to work since the safari debug tools don't have a profiler.

When I use profiler I see blank screen and see JS error:

Request with id = 23 failed. Method not found(-32601): 'Profiler.getProfile' wasn't found.

All the profile windows are empty

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.