Giter Site home page Giter Site logo

xdebug / vscode-php-debug Goto Github PK

View Code? Open in Web Editor NEW
773.0 30.0 176.0 3.72 MB

PHP Debug Adapter for Visual Studio Code ๐Ÿžโ›”

License: MIT License

TypeScript 97.28% PHP 0.54% Shell 0.06% JavaScript 2.11%
vscode vscode-extension xdebug php debugger

vscode-php-debug's Introduction

PHP Debug Adapter for Visual Studio Code

vs marketplace downloads rating build status codecov code style: prettier semantic-release

Demo GIF

Sponsor PHP Debug Adapter for Visual Studio Code

If you find this extension useful, if it helps you solve your problems and if you appreciate the support given here, consider sponsoring our work.

Installation

Install the extension: Press F1, type ext install php-debug.

This extension is a debug adapter between VS Code and Xdebug by Derick Rethans. Xdebug is a PHP extension (a .so file on Linux and a .dll on Windows) that needs to be installed on your server.

  1. Install Xdebug I highly recommend you make a simple test.php file, put a phpinfo(); statement in there, then copy the output and paste it into the Xdebug installation wizard. It will analyze it and give you tailored installation instructions for your environment. In short:

    • On Windows: Download the appropriate precompiled DLL for your PHP version, architecture (64/32 Bit), thread safety (TS/NTS) and Visual Studio compiler version and place it in your PHP extension folder.
    • On Linux: Either download the source code as a tarball or clone it with git, then compile it. Or see if your distribution already offers prebuilt packages.
  2. Configure PHP to use Xdebug by adding zend_extension=path/to/xdebug to your php.ini. The path of your php.ini is shown in your phpinfo() output under "Loaded Configuration File".

  3. Enable remote debugging in your php.ini:

    For Xdebug v3.x.x:

    xdebug.mode = debug
    xdebug.start_with_request = yes

    For Xdebug v2.x.x:

    xdebug.remote_enable = 1
    xdebug.remote_autostart = 1
    xdebug.remote_port = 9000

    There are other ways to tell Xdebug to connect to a remote debugger, like cookies, query parameters or browser extensions. I recommend remote_autostart (Xdebug v2)/start_with_request (Xdebug v3) because it "just works". There are also a variety of other options, like the port, please see the Xdebug documentation on remote debugging for more information. Please note that the default Xdebug port changed between Xdebug v2 to v3 from 9000 to 9003.

  4. If you are doing web development, don't forget to restart your webserver to reload the settings.

  5. Verify your installation by checking your phpinfo() output for an Xdebug section.

VS Code Configuration

In your project, go to the debugger and hit the little gear icon and choose PHP. A new launch configuration will be created for you with three configurations:

  • Listen for Xdebug This setting will simply start listening on the specified port (by default 9003) for Xdebug. If you configured Xdebug like recommended above, every time you make a request with a browser to your webserver or launch a CLI script Xdebug will connect and you can stop on breakpoints, exceptions etc.
  • Launch currently open script This setting is an example of CLI debugging. It will launch the currently opened script as a CLI, show all stdout/stderr output in the debug console and end the debug session once the script exits.
  • Launch Built-in web server This configuration starts the PHP built-in web server on a random port and opens the browser with the serverReadyAction directive. The port is random (localhost:0) but can be changed to a desired fixed port (ex: localhost:8080). If a router script is needed, add it with program directive. Additional PHP/Xdebug directives trigger debugging on every page load.

There are also configurations for Xdebug v2 (Legacy) installations.

More general information on debugging with VS Code can be found on https://code.visualstudio.com/docs/editor/debugging.

Note: You can even debug a script without launch.json. If no folder is open, and the VS Code status bar is purple, pressing F5 will start the open script with Xdebug3 specific parameters. If the php executable is not in path, you can provide it with the setting php.debug.executablePath. For debugging to work, Xdebug must still be correctly installed.

Supported launch.json settings:

  • request: Always "launch"
  • hostname: The address to bind to when listening for Xdebug (default: all IPv6 connections if available, else all IPv4 connections) or Unix Domain socket (prefix with unix://) or Windows Pipe (\\?\pipe\name) - cannot be combined with port
  • port: The port on which to listen for Xdebug (default: 9003). If port is set to 0 a random port is chosen by the system and a placeholder ${port} is replaced with the chosen port in env and runtimeArgs.
  • stopOnEntry: Whether to break at the beginning of the script (default: false)
  • pathMappings: A list of server paths mapping to the local source paths on your machine, see "Remote Host Debugging" below
  • log: Whether to log all communication between VS Code and the adapter to the debug console. See Troubleshooting further down.
  • ignore: An optional array of glob patterns that errors should be ignored from (for example **/vendor/**/*.php)
  • ignoreExceptions: An optional array of exception class names that should be ignored (for example BaseException, \NS1\Exception, \*\Exception or \**\Exception*)
  • skipFiles: An array of glob patterns, to skip when debugging. Star patterns and negations are allowed, for example, **/vendor/** or !**/vendor/my-module/**.
  • skipEntryPaths: An array of glob patterns, to immediately detach from and ignore for debugging if the entry script matches (example **/ajax.php).
  • maxConnections: Accept only this number of parallel debugging sessions. Additional connections will be dropped and their execution will continue without debugging.
  • proxy: DBGp Proxy settings
    • enable: To enable proxy registration set to true (default is `false).
    • host: The address of the proxy. Supports host name, IP address, or Unix domain socket (default: 127.0.0.1).
    • port: The port where the adapter will register with the the proxy (default: 9001).
    • key: A unique key that allows the proxy to match requests to your editor (default: vsc). The default is taken from VSCode settings php.debug.idekey.
    • timeout: The number of milliseconds to wait before giving up on the connection to proxy (default: 3000).
    • allowMultipleSessions: If the proxy should forward multiple sessions/connections at the same time or not (default: true).
  • xdebugSettings: Allows you to override Xdebug's remote debugging settings to fine tuning Xdebug to your needs. For example, you can play with max_children and max_depth to change the max number of array and object children that are retrieved and the max depth in structures like arrays and objects. This can speed up the debugger on slow machines. For a full list of feature names that can be set please refer to the Xdebug documentation.
    • max_children: max number of array or object children to initially retrieve
    • max_data: max amount of variable data to initially retrieve.
    • max_depth: maximum depth that the debugger engine may return when sending arrays, hashes or object structures to the IDE (there should be no need to change this as depth is retrieved incrementally, large value can cause IDE to hang).
    • show_hidden: This feature can get set by the IDE if it wants to have more detailed internal information on properties (eg. private members of classes, etc.) Zero means that hidden members are not shown to the IDE.
  • xdebugCloudToken: Instead of listening locally, open a connection and register with Xdebug Cloud and accept debugging sessions on that connection.
  • stream: Allows to influence DBGp streams. Xdebug only supports stdout see DBGp stdout
    • stdout: Redirect stdout stream: 0 (disable), 1 (copy), 2 (redirect)

Options specific to CLI debugging:

  • program: Path to the script that should be launched
  • args: Arguments passed to the script
  • cwd: The current working directory to use when launching the script
  • runtimeExecutable: Path to the PHP binary used for launching the script. By default the one on the PATH.
  • runtimeArgs: Additional arguments to pass to the PHP binary
  • externalConsole: Launches the script in an external console window instead of the debug console (default: false)
  • env: Environment variables to pass to the script
  • envFile: Optional path to a file containing environment variable definitions

Features

  • Line breakpoints
  • Conditional breakpoints
  • Hit count breakpoints: supports the conditions like >=n, ==n and %n
  • Function breakpoints
  • Step over, step in, step out
  • Break on entry
  • Start with Stop on entry (F10/F11)
  • Breaking on uncaught exceptions and errors / warnings / notices
  • Multiple, parallel requests
  • Stack traces, scope variables, superglobals, user defined constants
  • Arrays & objects (including classname, private and static properties)
  • Debug console
  • Watches
  • Set variables
  • Run as CLI
  • Run without debugging
  • DBGp Proxy registration and unregistration support
  • Xdebug Cloud support

Remote Host Debugging

To debug a running application on a remote host, you need to tell Xdebug to connect to a different IP than localhost. This can either be done by setting xdebug.client_host to your IP or by setting xdebug.discover_client_host = 1 to make Xdebug always connect back to the machine who did the web request. The latter is the only setting that supports multiple users debugging the same server and "just works" for web projects. Again, please see the Xdebug documentation on the subject for more information.

To make VS Code map the files on the server to the right files on your local machine, you have to set the pathMappings settings in your launch.json. Example:

// server -> local
"pathMappings": {
  "/var/www/html": "${workspaceFolder}/www",
  "/app": "${workspaceFolder}/app"
}

Please also note that setting any of the CLI debugging options will not work with remote host debugging, because the script is always launched locally. If you want to debug a CLI script on a remote host, you need to launch it manually from the command line.

Proxy support

The debugger can register itself to a DBGp proxy with a IDE Key. The proxy will then forward to the IDE only those DBGp sessions that have this specified IDE key. This is helpful in a multiuser environment where developers cannot use the same DBGp port at the same time. Careful setup is needed that requests to the web server contain the matching IDE key.

The official implementation of the dbgpProxy.

A Xdebug helper browser extension is also recommended. There the request side IDE key can be easily configured.

Troubleshooting

  • Ask a question on StackOverflow
  • If you think you found a bug, open an issue
  • Make sure you have the latest version of this extension and Xdebug installed
  • Try out a simple PHP file to recreate the issue, for example from the testproject
  • Set "log": true in your launch.json and observe Debug Console panel
  • In your php.ini, set xdebug.log = /path/to/logfile (make sure your webserver has write permissions to the file)
  • Reach out on Twitter @damjancvetko

Contributing

To hack on this adapter, clone the repository and open it in VS Code. You need NodeJS with NPM installed and in your PATH. Also a recent PHP and Xdebug should be installed and in your PATH.

  1. Install NPM packages by either running npm install on command line in the project directory or selecting Terminal / Run Task... / npm / npm: install in VS Code menu.
  2. Run the build/watch process either by running npm run watch on command line in the project directory or selecting Terminal / Run Build Task... in VS Code menu.
  3. Start the debug adapter by opening the Run and Debug side bar, selecting Debug adapter configuration and clicking on the green Run arrow (or hitting F5). The compiled adapter will be running in "server mode" and listening on TCP port 4711.
  4. Run a separate instance of VS Code, called "Extension Development Host" by running code testproject --extensionDevelopmentPath=. on command line in the project directory or selecting the Launch Extension Run and Debug configuration and pressing the green Run arrow. Another shortcut is to run npm run start. You can also run an Insiders build of VS Code for testing newer features.
  5. In the "Extension Development Host" instance open .vscode/launch.json and uncomment the debugServer configuration line. Run your PHP debug session by selecting the desired configuration and hitting F5. Now you can debug the testproject like specified above and set breakpoints inside your first VS Code instance to step through the adapter code.

More on testing extensions can be found on https://code.visualstudio.com/api/working-with-extensions/testing-extension.

Tests are written with Mocha and can be run with npm test or from Terminal / Run Task... / npm: test. When you submit a PR the tests will be run in CI on Linux, macOS and Windows against multiple PHP and Xdebug versions.

Before submitting a PR also run npm run lint or Terminal / Run Tasks... / npm: lint.

vscode-php-debug's People

Contributors

8ctopus avatar angristan avatar augustocdias avatar batopa avatar brnathanlima avatar dependabot[bot] avatar derickr avatar dsclee1 avatar eremaijala avatar felipecrs avatar felixfbecker avatar gianugo avatar greenkeeper[bot] avatar greenkeeperio-bot avatar johnrom avatar jonyo avatar josecanhelp avatar joshua-owens avatar kaysonwu avatar keanu73 avatar martin-schulze-vireso avatar nijlandvpr avatar odahcam avatar patrik-csak avatar pbogut avatar qwertyzw avatar renovate-bot avatar renovate[bot] avatar shivapoudel avatar zobo 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

vscode-php-debug's Issues

Option to disable automatic exception breakpoints, break only at explicit points

Please include the ability to disable automatic breakpoints, this extension is all but useless for debugging older code without it. I have inherited an ancient application built on a terrible homemade framework that constantly throws exceptions for small things, I don't want to click continue 100+ times before I can get to my own explicit breakpoint and fix actual feature code.

If you could point me to where the automatic breakpoints are configured / set, I can fork and solve this issue myself, but my understanding of the GDBp is limited, and TypeScript is somewhat foreign, so I need some direction.

Thanks.


PHP version: 5.6.22
XDebug version: 2.4.1
Adapter version: 1.9.4

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "localSourceRoot": "/Users/mitchell/dev/git",
            "serverSourceRoot": "/mnt/git/"
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

Empty Variables

PHP version: 5.4.24
XDebug version: 2.2.3
Adapter version:

screen shot 2016-06-15 at 3 26 18 pm

None of these variables should be none

Debugging CLI programs with blocking calls block all other php programs in the machine

To reproduce, in this example, first you can just run this in a bash shell and it will spawn a php interpreter every second:

while true; do php -r 'echo "ping ";'; date; sleep 1; done

Try to debug a trivial php cli script with a blocking call (socket reads or sleep calls for example). For example, if a breakpoint is set in the sleep call in below, the output from the snippet above will keep printing every second. But while it is sleeping for the 10 seconds or blocking for any other purpose, all other php scripts in the machine become blocked (it looks like it is because the add-in attempts to listen to all php processes. When first running vscode, you can see activity from external processes flashing in the "call stack" portion of the debug window).

<?php sleep(10); ?>

I am using vscode on Ubuntu 15.10.

Invalid Version: 2.4.0RC

Debug shown a message, "Invalid Version: 2.4.0RC3" and stopped at first line.

PHP version: 7.0.8
XDebug version: 2.4.0RC3
Adapter version: 19.2

Can't get PHP Extension to start in VSCode

Hi,
I've installed XDebug. I'm able to connect with other IDE clients.
I've installed the php-debug extension using F1 then install extensions. The "installed extensions" show that I have it installed.

When I go to debug window from within VC I can't see any PHP extension to choose to start debugging. All I can see is "Launch extension" but no way of selecting anything.

Any ideas ?

Mark

Does not work with space in path

Hi, we are getting source is not available when application stops on breakpoint. We are using vs code on Windows and newest version of this plugin.

Error

PHP Debug won't stop at breakpoint

PHP version: 5.6.20
XDebug version: 2.4.0
Adapter version: 1.7.1

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

XDebug php.ini config:

zend_extension=/usr/local/Cellar/php56/5.6.20/php/php/extensions/no-debug-non-zts-20131226/xdebug.so
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log=/var/log/xdebug.log

XDebug logfile (from setting xdebug.remote_log in php.ini):

Log opened at 2016-04-29 07:49:00
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4947" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:00

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4943" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4944" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4947" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4949" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4919" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:01

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:01

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4944" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Log opened at 2016-04-29 07:49:01
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4943" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:01

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4947" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4949" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4919" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4944" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4943" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4947" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4949" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

Log opened at 2016-04-29 07:49:02
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4919" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:02

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2016-04-29 07:49:03

Log opened at 2016-04-29 07:49:03
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///www/sites/profitplace/www/index.php" language="PHP" xdebug:language_version="5.6.19" protocol_version="1.0" appid="4943" idekey="XDEBUG_ECLIPSE"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

Adapter logfile (from setting "log": true in launch.json):

Code snippet to reproduce:

public function actionActivatecard($cardId) 
{
    try {// here is breakpoint
        $this->cardService->activateCard($cardId); // here is breakpoint
    } catch (\Exception $e) { // here is breakpoint
        $this->processException($e);
    }

    $this->response['type'] = 'success';

    $this->sendAjaxResponse($this->response);
}

My problem is, that I can't pause execution of PHP code with PHP Debug. I have used this extension with VS Code before and it worked great. But then I needed to re-compile PHP module on my machine and since than it is no working. With command 'php -m' I can see xdebug extension listed twice as expected. I tried it with different setting in php.ini but without any success. But the biggest mistery is, that after recompilation of my php module I set up xdebug extension and it worked fine. But when I opened my computer again, it won't pause on any breakpoint even no on everything. In my chrome I'm using extension Xdebug helper, which I needed to enable before debugging. I would be very thankful if you can help me

affected_rows for $mysqli->query() is always -1 when debugging

The insert/update/delete statement runs successfully and the value is in the database, but mysqli->affected_rows is -1.
When the same code is run without debugging, affected_rows is correct >1.
In the xdebug log file the value goes from 0 to 1 and then to -1 (See below), but during debugging i can only see -1
When using prepared statements instead of query everything works fine.

PHP version: 7.0.8 TS
XDebug version: php_xdebug-2.4.0-7.0-vc14-x86_64.dll
Adapter version: 1.9.3

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "log": true
        }
    ]
}

XDebug php.ini config:

zend_extension="php_xdebug-2.4.0-7.0-vc14-x86_64.dll"

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log = "C:/php7/xdebug.log"

XDebug logfile (from setting xdebug.remote_log in php.ini):

Log opened at 2016-07-15 16:02:45
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///C:/--redacted--/testdb.php" language="PHP" xdebug:language_version="7.0.1-dev" protocol_version="1.0" appid="7832" idekey="PC-WORK-20$">
<engine version="2.4.0">
<![CDATA[Xdebug]]>
</engine>
<author>
<![CDATA[Derick Rethans]]>
</author>
<url>
<![CDATA[http://xdebug.org]]>
</url>
<copyright>
<![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]>
</copyright>
</init>

<- feature_set -i 1 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1">
</response>

<- feature_set -i 2 -n max_children -v 10000
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1">
</response>

<- feature_set -i 3 -n max_data -v 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_data" success="1">
</response>

<- breakpoint_list -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4">
</response>

<- breakpoint_set -i 5 -t line -f file:///c:/--redacted--/testdb.php -n 14
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="78320141">
</response>

<- breakpoint_list -i 6
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="6">
<breakpoint type="line" filename="file:///C:/--redacted--/testdb.php" lineno="14" state="enabled" hit_count="0" hit_value="0" id="78320141">
</breakpoint>
</response>

<- breakpoint_list -i 7
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="7">
<breakpoint type="line" filename="file:///--redacted--/testdb.php" lineno="14" state="enabled" hit_count="0" hit_value="0" id="78320141">
</breakpoint>
</response>

<- run -i 8
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok">
<xdebug:message filename="file:///--redacted--/testdb.php" lineno="14">
</xdebug:message>
</response>

<- stack_get -i 9
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="9">
<stack where="{main}" level="0" type="file" filename="file:///--redacted--/testdb.php" lineno="14">
</stack>
</response>

<- context_names -i 10 -d 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="10">
<context name="Locals" id="0">
</context>
<context name="Superglobals" id="1">
</context>
<context name="User defined constants" id="2">
</context>
</response>

<- context_get -i 11 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="11" context="0">
<property name="$DB_PortalData" fullname="$DB_PortalData" type="string" size="20" encoding="base64">
<![CDATA[bWtfTmF2RGlzcGF0Y2hQb3J0YWw=]]>
</property>
<property name="$host" fullname="$host" type="string" size="12" encoding="base64">
<![CDATA[MTkyLjE2OC4yLjMw]]>
</property>
<property name="$mysqli" fullname="$mysqli" type="object" classname="mysqli" children="1" numchildren="19" page="0" pagesize="10000">
<property name="affected_rows" fullname="$mysqli-&gt;affected_rows" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="client_info" fullname="$mysqli-&gt;client_info" facet="public" type="string" size="79" encoding="base64">
<![CDATA[bXlzcWxuZCA1LjAuMTItZGV2IC0gMjAxNTA0MDcgLSAkSWQ6IDI0MWFlMDA5ODlkMTk5NWZmY2JiZjYzZDU3OTk0MzYzNWZhZjk5NzIgJA==]]>
</property>
<property name="client_version" fullname="$mysqli-&gt;client_version" facet="public" type="int">
<![CDATA[50012]]>
</property>
<property name="connect_errno" fullname="$mysqli-&gt;connect_errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="connect_error" fullname="$mysqli-&gt;connect_error" facet="public" type="null">
</property>
<property name="errno" fullname="$mysqli-&gt;errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="error" fullname="$mysqli-&gt;error" facet="public" type="string" size="0" encoding="base64">
<![CDATA[]]>
</property>
<property name="error_list" fullname="$mysqli-&gt;error_list" facet="public" type="array" children="0" numchildren="0">
</property>
<property name="field_count" fullname="$mysqli-&gt;field_count" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="host_info" fullname="$mysqli-&gt;host_info" facet="public" type="string" size="23" encoding="base64">
<![CDATA[MTkyLjE2OC4yLjMwIHZpYSBUQ1AvSVA=]]>
</property>
<property name="info" fullname="$mysqli-&gt;info" facet="public" type="null">
</property>
<property name="insert_id" fullname="$mysqli-&gt;insert_id" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="server_info" fullname="$mysqli-&gt;server_info" facet="public" type="string" size="15" encoding="base64">
<![CDATA[NS41LjQ2LTArZGViOHUx]]>
</property>
<property name="server_version" fullname="$mysqli-&gt;server_version" facet="public" type="int">
<![CDATA[50546]]>
</property>
<property name="stat" fullname="$mysqli-&gt;stat" facet="public" type="string" size="152" encoding="base64">
<![CDATA[VXB0aW1lOiAxNjI0MzUxMiAgVGhyZWFkczogMjggIFF1ZXN0aW9uczogNDc1ODY4OTcwICBTbG93IHF1ZXJpZXM6IDEzMCAgT3BlbnM6IDI2MjI0NiAgRmx1c2ggdGFibGVzOiAxICBPcGVuIHRhYmxlczogNDAwICBRdWVyaWVzIHBlciBzZWNvbmQgYXZnOiAyOS4yOTU=]]>
</property>
<property name="sqlstate" fullname="$mysqli-&gt;sqlstate" facet="public" type="string" size="5" encoding="base64">
<![CDATA[MDAwMDA=]]>
</property>
<property name="protocol_version" fullname="$mysqli-&gt;protocol_version" facet="public" type="int">
<![CDATA[10]]>
</property>
<property name="thread_id" fullname="$mysqli-&gt;thread_id" facet="public" type="int">
<![CDATA[26838690]]>
</property>
<property name="warning_count" fullname="$mysqli-&gt;warning_count" facet="public" type="int">
<![CDATA[0]]>
</property>
</property>
<property name="$password" fullname="$password" type="string" size="6" encoding="base64">
<![CDATA[--redacted--]]>
</property>
<property name="$ret" fullname="$ret" type="uninitialized">
</property>
<property name="$sql" fullname="$sql" type="string" size="86" encoding="base64">
<![CDATA[SU5TRVJUIElOVE8gbWtfTmF2RGlzcGF0Y2hQb3J0YWwuY21zVXNlcgogICAgICAgICAgICAoTmFtZSkKICAgICAgICAgICAgVkFMVUVTICgnTTU2Jyk=]]>
</property>
<property name="$username" fullname="$username" type="string" size="14" encoding="base64">
<![CDATA[bWtfTmF2RGlzcGF0Y2g=]]>
</property>
</response>

<- step_into -i 12
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="12" status="break" reason="ok">
<xdebug:message filename="file:///--redacted--/testdb.php" lineno="15">
</xdebug:message>
</response>

<- stack_get -i 13
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="13">
<stack where="{main}" level="0" type="file" filename="file:///--redacted--/testdb.php" lineno="15">
</stack>
</response>

<- context_names -i 14 -d 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="14">
<context name="Locals" id="0">
</context>
<context name="Superglobals" id="1">
</context>
<context name="User defined constants" id="2">
</context>
</response>

<- context_get -i 15 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="15" context="0">
<property name="$DB_PortalData" fullname="$DB_PortalData" type="string" size="20" encoding="base64">
<![CDATA[bWtfTmF2RGlzcGF0Y2hQb3J0YWw=]]>
</property>
<property name="$host" fullname="$host" type="string" size="12" encoding="base64">
<![CDATA[MTkyLjE2OC4yLjMw]]>
</property>
<property name="$mysqli" fullname="$mysqli" type="object" classname="mysqli" children="1" numchildren="19" page="0" pagesize="10000">
<property name="affected_rows" fullname="$mysqli-&gt;affected_rows" facet="public" type="int">
<![CDATA[1]]>
</property>
<property name="client_info" fullname="$mysqli-&gt;client_info" facet="public" type="string" size="79" encoding="base64">
<![CDATA[bXlzcWxuZCA1LjAuMTItZGV2IC0gMjAxNTA0MDcgLSAkSWQ6IDI0MWFlMDA5ODlkMTk5NWZmY2JiZjYzZDU3OTk0MzYzNWZhZjk5NzIgJA==]]>
</property>
<property name="client_version" fullname="$mysqli-&gt;client_version" facet="public" type="int">
<![CDATA[50012]]>
</property>
<property name="connect_errno" fullname="$mysqli-&gt;connect_errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="connect_error" fullname="$mysqli-&gt;connect_error" facet="public" type="null">
</property>
<property name="errno" fullname="$mysqli-&gt;errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="error" fullname="$mysqli-&gt;error" facet="public" type="string" size="0" encoding="base64">
<![CDATA[]]>
</property>
<property name="error_list" fullname="$mysqli-&gt;error_list" facet="public" type="array" children="0" numchildren="0">
</property>
<property name="field_count" fullname="$mysqli-&gt;field_count" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="host_info" fullname="$mysqli-&gt;host_info" facet="public" type="string" size="23" encoding="base64">
<![CDATA[MTkyLjE2OC4yLjMwIHZpYSBUQ1AvSVA=]]>
</property>
<property name="info" fullname="$mysqli-&gt;info" facet="public" type="null">
</property>
<property name="insert_id" fullname="$mysqli-&gt;insert_id" facet="public" type="int">
<![CDATA[331]]>
</property>
<property name="server_info" fullname="$mysqli-&gt;server_info" facet="public" type="string" size="15" encoding="base64">
<![CDATA[NS41LjQ2LTArZGViOHUx]]>
</property>
<property name="server_version" fullname="$mysqli-&gt;server_version" facet="public" type="int">
<![CDATA[50546]]>
</property>
<property name="stat" fullname="$mysqli-&gt;stat" facet="public" type="string" size="152" encoding="base64">
<![CDATA[VXB0aW1lOiAxNjI0MzUxNiAgVGhyZWFkczogMjcgIFF1ZXN0aW9uczogNDc1ODY4OTczICBTbG93IHF1ZXJpZXM6IDEzMCAgT3BlbnM6IDI2MjI0NiAgRmx1c2ggdGFibGVzOiAxICBPcGVuIHRhYmxlczogNDAwICBRdWVyaWVzIHBlciBzZWNvbmQgYXZnOiAyOS4yOTU=]]>
</property>
<property name="sqlstate" fullname="$mysqli-&gt;sqlstate" facet="public" type="string" size="5" encoding="base64">
<![CDATA[MDAwMDA=]]>
</property>
<property name="protocol_version" fullname="$mysqli-&gt;protocol_version" facet="public" type="int">
<![CDATA[10]]>
</property>
<property name="thread_id" fullname="$mysqli-&gt;thread_id" facet="public" type="int">
<![CDATA[26838690]]>
</property>
<property name="warning_count" fullname="$mysqli-&gt;warning_count" facet="public" type="int">
<![CDATA[4]]>
</property>
</property>
<property name="$password" fullname="$password" type="string" size="6" encoding="base64">
<![CDATA[--redacted--]]>
</property>
<property name="$ret" fullname="$ret" type="bool">
<![CDATA[1]]>
</property>
<property name="$sql" fullname="$sql" type="string" size="86" encoding="base64">
<![CDATA[SU5TRVJUIElOVE8gbWtfTmF2RGlzcGF0Y2hQb3J0YWwuY21zVXNlcgogICAgICAgICAgICAoTmFtZSkKICAgICAgICAgICAgVkFMVUVTICgnTTU2Jyk=]]>
</property>
<property name="$username" fullname="$username" type="string" size="14" encoding="base64">
<![CDATA[bWtfTmF2RGlzcGF0Y2g=]]>
</property>
</response>

<- property_get -i 16 -d 0 -c 0 -n $mysqli
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="16">
<property name="$mysqli" fullname="$mysqli" type="object" classname="mysqli" children="1" numchildren="19" page="0" pagesize="10000">
<property name="affected_rows" fullname="$mysqli-&gt;affected_rows" facet="public" type="int">
<![CDATA[-1]]>
</property>
<property name="client_info" fullname="$mysqli-&gt;client_info" facet="public" type="string" size="79" encoding="base64">
<![CDATA[bXlzcWxuZCA1LjAuMTItZGV2IC0gMjAxNTA0MDcgLSAkSWQ6IDI0MWFlMDA5ODlkMTk5NWZmY2JiZjYzZDU3OTk0MzYzNWZhZjk5NzIgJA==]]>
</property>
<property name="client_version" fullname="$mysqli-&gt;client_version" facet="public" type="int">
<![CDATA[50012]]>
</property>
<property name="connect_errno" fullname="$mysqli-&gt;connect_errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="connect_error" fullname="$mysqli-&gt;connect_error" facet="public" type="null">
</property>
<property name="errno" fullname="$mysqli-&gt;errno" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="error" fullname="$mysqli-&gt;error" facet="public" type="string" size="0" encoding="base64">
<![CDATA[]]>
</property>
<property name="error_list" fullname="$mysqli-&gt;error_list" facet="public" type="array" children="0" numchildren="0">
</property>
<property name="field_count" fullname="$mysqli-&gt;field_count" facet="public" type="int">
<![CDATA[0]]>
</property>
<property name="host_info" fullname="$mysqli-&gt;host_info" facet="public" type="string" size="23" encoding="base64">
<![CDATA[MTkyLjE2OC4yLjMwIHZpYSBUQ1AvSVA=]]>
</property>
<property name="info" fullname="$mysqli-&gt;info" facet="public" type="null">
</property>
<property name="insert_id" fullname="$mysqli-&gt;insert_id" facet="public" type="int">
<![CDATA[331]]>
</property>
<property name="server_info" fullname="$mysqli-&gt;server_info" facet="public" type="string" size="15" encoding="base64">
<![CDATA[NS41LjQ2LTArZGViOHUx]]>
</property>
<property name="server_version" fullname="$mysqli-&gt;server_version" facet="public" type="int">
<![CDATA[50546]]>
</property>
<property name="stat" fullname="$mysqli-&gt;stat" facet="public" type="string" size="152" encoding="base64">
<![CDATA[VXB0aW1lOiAxNjI0MzUyMCAgVGhyZWFkczogMjcgIFF1ZXN0aW9uczogNDc1ODY5MDIzICBTbG93IHF1ZXJpZXM6IDEzMCAgT3BlbnM6IDI2MjI0NiAgRmx1c2ggdGFibGVzOiAxICBPcGVuIHRhYmxlczogNDAwICBRdWVyaWVzIHBlciBzZWNvbmQgYXZnOiAyOS4yOTU=]]>
</property>
<property name="sqlstate" fullname="$mysqli-&gt;sqlstate" facet="public" type="string" size="5" encoding="base64">
<![CDATA[MDAwMDA=]]>
</property>
<property name="protocol_version" fullname="$mysqli-&gt;protocol_version" facet="public" type="int">
<![CDATA[10]]>
</property>
<property name="thread_id" fullname="$mysqli-&gt;thread_id" facet="public" type="int">
<![CDATA[26838690]]>
</property>
<property name="warning_count" fullname="$mysqli-&gt;warning_count" facet="public" type="int">
<![CDATA[4]]>
</property>
</property>
</response>

<- run -i 17
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="17" status="stopping" reason="ok">
</response>

<- stop -i 18
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stop" transaction_id="18" status="stopped" reason="ok">
</response>

Log closed at 2016-07-15 16:03:03

Adapter logfile (from setting "log": true in launch.json):
How do i get the log out? I can only copy one screen at a time.

Code snippet to reproduce:

$mysqli = new mysqli($host, $username, $password);
$mysqli->set_charset('utf8');

$sql =   "INSERT INTO $DB_PortalData.cmsUser
            (Name)
            VALUES ('M56')";
$ret = $mysqli->query($sql);
error_log('Affected rows: '.$mysqli->affected_rows);

DB Server:
Server type: MySQL
Server version: 5.5.46-0+deb8u1 - (Debian)
Protocol version: 10

Debug crashed

When do debug there's an alert message like this and can't debug.

image

Feb Release Causes Debugging to Fail

It appears that the latest release of VS Code (February) has caused PHP debugging to stop working. Are others experiencing any issues?

Thanks,
Chad

Large integers do overflow

Values larger than 2^31-1 are not displayed correctly
debug

PHP version: 7.0.8
XDebug version: 2.4.0-7.0 vc14 x86_64
Adapter version: 1.9.3

Edit: Logging the value during debug produces the correct result though.

Better getting started guide

For someone that is completely new to PHP (me), I struggled to get everything working on my mac and in the end had to give up and use PHP Storm to get a trivial task done.

Is there anyway that we can improve the docs for new starters?

Happy to help out, just don't know where to start.

Error message "Source XY is not available"

Hi Felix,

I installed the extension as you suggested. When calling the page, the VS debugger is called, so the connection is established. Nevertheless I face the problem, that instead of displaying the php page, an error is displayed: "Source c:/xampp/htdocs/launchpad/index.php is not available.". I fiddled around with the settings for serverSourceRoot and localSourceRoot but the message never changes. I therefore don't understand where this directory comes from.

Log output (I assume that you are looking for these two request / responses, right?):

-> setBreakpointsRequest
{ type: 'request',
  seq: 12,
  command: 'setBreakpoints',
  arguments: 
   { source: { path: '/Users/XXXXX/coreplatformlaunchpad/index.php' },
     lines: [ 3 ],
     breakpoints: [ { line: 3 } ] } }
<- setBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 12,
  command: 'setBreakpoints',
  success: true,
  body: { breakpoints: [ { verified: true, line: 3 } ] } }


-> stackTraceRequest
{ type: 'request',
  seq: 16,
  command: 'stackTrace',
  arguments: { threadId: 2, levels: 20 } }
<- stackTraceResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 16,
  command: 'stackTrace',
  success: true,
  body: 
   { stackFrames: 
      [ StackFrame {
          id: 2,
          source: 
           Source {
             name: 'index.php',
             path: '/C:/xampp/htdocs/launchpad/index.php',
             sourceReference: 0 },
          line: 3,
          column: 1,
          name: '{main}' } ] } }

Browser loading forever in "Listen for XDebug" mode

PHP version: 5.6.8
XDebug version: 2.4.0
Adapter version:

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "serverSourceRoot": "/Applications/XAMPP/xamppfiles/apache2/htdocs/test/testproject",
            "localSourceRoot": "${workspaceRoot}",
            "port": 9000,
            "log": true
        },
        {
            "name": "Launch",
            "request": "launch",
            "type": "php",
            "program": "${file}",
            "cwd": "${workspaceRoot}",
            "externalConsole": false
        }
    ]
}

XDebug php.ini config:

xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log=/var/log/xdebug.log

XDebug logfile (from setting xdebug.remote_log in php.ini):
Adapter logfile (from setting "log": true in launch.json):

Code snippet to reproduce:

echo "hello word!";

I'm using vscode with xdebug. When I test with Launch currently open script, it work but not stop at breakpoint, when I test with Listen for Xdebug, browser loading forever and nothing display.
My web server running on the same machine as VS Code.

Breakpoint not reached

hi,@felixfbecker ,I think there must be something wrong in my config or php-debug.
The server is centos with vmare,which shares folders with windows.
The php-debug config file:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "serverSourceRoot":"/mnt/web/app",
            "localSourceRoot": "./",
            "log": true
        }
    ]
}

the vsc opened "d:/Web/app", which is mapped "/mnt/web/app" on server
I set breakpoints in file EconomyController.php, and the start debug listening.when i sent request to server,the debug console show logs below:

<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'started', threadId: 3 } }
-> threadsRequest
{ type: 'request', seq: 9, command: 'threads' }
<- threadsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 9,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 3, name: 'Request 3 (7:00:09 PM)' } ] } }
<- initializedEvent
InitializedEvent { seq: 0, type: 'event', event: 'initialized' }
-> setBreakpointsRequest
{ type: 'request',
  seq: 10,
  command: 'setBreakpoints',
  arguments: 
   { source: { path: 'd:\\Web\\app\\app\\Http\\Controllers\\Im\\EconomyController.php' },
     lines: [ 118, 119 ] } }
-> setExceptionBreakpointsRequest
{ type: 'request',
  seq: 11,
  command: 'setExceptionBreakpoints',
  arguments: { filters: [] } }
<- setExceptionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 11,
  command: 'setExceptionBreakpoints',
  success: true }
<- setBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 10,
  command: 'setBreakpoints',
  success: true,
  body: 
   { breakpoints: 
      [ Breakpoint { verified: true, line: 118 },
        Breakpoint { verified: true, line: 119 } ] } }
<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'exited', threadId: 3 } }

and browser got results quickly, not stopped at the breakpoints.
the path in the log is correct
xdebug configure:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = "192.168.0.114"
xdebug.remote_port = 9000
;xdebug.remote_handler = "dbgp"
;xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.idekey="mydebug"
xdebug.max_nesting_level = 512
xdebug.remote_log = "/var/log/xdebug.log"

the php debug version is 1.1.2
can you tell me where i made mistakes? thanks

stop working on vscode 1.2

After update vs code to version 1.2

Debug stops to work after the first break point step over. It does not crash/stop and no message is displayed but the indicator of current execution statement on code editor desapear and variables from the left pane also desapear. If I stop the debug and play again, it stops on breakpoint again but same problem ocurrs after step over.

I downgraded to version 1.1 and the bug does not exists.

PHP version: 7.0.4
XDebug version: v2.4.0
Adapter version:

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log" : true
        }
    ]
}

XDebug php.ini config:

zend_extension = D:\Tools\xampp\php\ext\php_xdebug-2.4.0-7.0-vc14.dll
xdebug.remote_autostart = "On"
xdebug.remote_enable = "On"
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log = D:\Tools\xampp\tmp\xdebug.log

XDebug logfile (from setting xdebug.remote_log in php.ini):

Log opened at 2016-06-06 20:43:20
I: Connecting to configured address/port: 127.0.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///D:/Dev/etucujurisbackend/src/cmd.php" language="PHP" xdebug:language_version="7.0.1-dev" protocol_version="1.0" appid="8564" idekey="Herbert"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

<- feature_set -i 1 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>

<- feature_set -i 2 -n max_children -v 9999
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>

<- feature_set -i 3 -n max_data -v 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_data" success="1"></response>

<- breakpoint_list -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4"></response>

<- breakpoint_set -i 5 -t line -f file:///d:/Dev/etucujurisbackend/src/cmd.php -n 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="85640001"></response>

<- breakpoint_list -i 6
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="6"><breakpoint type="line" filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="4" state="enabled" hit_count="0" hit_value="0" id="85640001"></breakpoint></response>

<- breakpoint_list -i 7
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="7"><breakpoint type="line" filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="4" state="enabled" hit_count="0" hit_value="0" id="85640001"></breakpoint></response>

<- run -i 8
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="4"></xdebug:message></response>

<- stack_get -i 9
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="9"><stack where="{main}" level="0" type="file" filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="4"></stack></response>

<- context_names -i 10 -d 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="10"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>

<- context_get -i 11 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="11" context="0"><property name="$var1" fullname="$var1" type="uninitialized"></property><property name="$var2" fullname="$var2" type="uninitialized"></property></response>

<- step_over -i 12
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_over" transaction_id="12" status="break" reason="ok"><xdebug:message filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="5"></xdebug:message></response>

<- stack_get -i 13
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="13"><stack where="{main}" level="0" type="file" filename="file:///D:/Dev/etucujurisbackend/src/cmd.php" lineno="5"></stack></response>

<- context_names -i 14 -d 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="14"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>

<- context_get -i 15 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="15" context="0"><property name="$var1" fullname="$var1" type="int"><![CDATA[1]]></property><property name="$var2" fullname="$var2" type="uninitialized"></property></response>

<- stop -i 16
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stop" transaction_id="16" status="stopped" reason="ok"></response>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stop" transaction_id="16" status="stopping" reason="ok"></response>

Log closed at 2016-06-06 20:44:03

Adapter logfile (from setting "log": true in launch.json):

Code snippet to reproduce:

$var1 = 1;
$var2 = 2;

print $var1 + $var2;

snip_20160606174352

Do not send 'STOPPED' event before sending the reponse for requests from VSCode

After investigating microsoft/vscode#6757 it seems that the PHP adapter is sending a STOPPED event before the reponse for the step command.

Previously we had a workaround that would prevent this issue, but we have removed this workaround due to other issues microsoft/vscode#5966

The order of respone / events now needs to be respected, and the PHP adapter should only send the 'STOPPED' event after sending back the response for commands to VSCode.

fyi @weinand

When debugging long size variables (Ex: XML with more than 2000 chars), var inspection only shows first 1024 chars

PHP version: 5.4.39
XDebug version: Xdebug v2.2.3

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

Current php.ini config:

XDebug php.ini config:  
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
;xdebug.remote_host=127.0.0.1
xdebug.remote_autostart = 1
xdebug.profiler_enable=0
xdebug.profiler_output_dir=C:\PHPTrace
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.trace_format = 2;
xdebug.profiler_append = 1
xdebug.show_mem_delta = 1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=20

Add source code mapping

Some projects don't have their PHP code in the root folder - a few debuggers out there have a source mapping setting that allows to map the server layout to a different folder. Would be great to have something like that here as well.

Thank you for this extension - perfect timing as I used it right away and it worked like a charm!

Execution not stopping at breakpoints

Mac OSX 10.11.1
VS Code 0.10.6
Local PHP 5.3.29 with XDebug 2.1.0
php-debug 1.0.1


The debugger works properly when I put an xdebug_break(); in my code but my breakpoints are always being ignored.

I have been testing this with a few different project directories to see if different projects behave differently, if capitalization in paths and filenames is an issue (paths always seem to be made lowercase), and also while using the sourcemap branch.

I'm also reading up on dbgp and comparing logs generated from this extension with other IDEs to figure out if I can pinpoint what's up.

My latest discovery is that an extra starting slash is being sent in the file path for breakpoints...

breakpoint_set -i 3 -t line -f file:////users/andrew/project/test.php -n 9

Could that perhaps be what's throwing xdebug off?

setFunctionBreakpoints support?

Hi, I updated VSCode version to 0.10.10 today. And I faced below error when start PHP debug(Listen for XDebug).

Is this mean 'vscode-php-debug' does not support 'setFunctionBreakpoints' yet?
Should i downgrade VSCode to the previous version?

-> setFunctionBreakpointsRequest
{ type: 'request',
  seq: 23,
  command: 'setFunctionBreakpoints',
  arguments: { breakpoints: [] } }
<- setFunctionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 23,
  command: 'setFunctionBreakpoints',
  success: false,
  message: 'request \'setFunctionBreakpoints\': unrecognized request',
  body: 
   { error: 
      { id: 1014,
        format: 'request \'setFunctionBreakpoints\': unrecognized request',
        sendTelemetry: true } } }

VSCode 0.10.10
PHP Debug: 1.4.0

More tests

Integration

  • parallel requests
  • eval
  • output
  • inline sources

Unit

  • DGBP protocol parsing
  • source mapping

Crash while debugging adapter - dbgp.ts:42 "Undefined is not a function"

Hey Felix, this might be related to your issue here microsoft/vscode-debugadapter-node#7.

When I debug the extension and send it an xdebug connection it breaks at line 42 of dbgp.ts.

41 // does data contain a NULL byte?
42 const nullByteIndex = data.indexOf(0);

Here's a (truncated) look at data
screen shot 2016-01-09 at 4 47 49 pm

Full exception is...

/lowercase/vscode-php-debug/out/dbgp.js:33
            var nullByteIndex = data.indexOf(0);
                                     ^
TypeError: undefined is not a function
    at Connection.DbgpConnection._handleDataChunk (/lowercase/vscode-php-debug/out/dbgp.js:33:38)
    at Socket.<anonymous> (/lowercase/vscode-php-debug/out/dbgp.js:26:58)
    at Socket.emit (events.js:107:17)
    at readableAddChunk (_stream_readable.js:163:16)
    at Socket.Readable.push (_stream_readable.js:126:10)
    at TCP.onread (net.js:538:20)

From there the adapter debugger quits and the extension development host window's debugger becomes unresponsive.

Excluding folder paths from debugging

PHP version: 5.6 / 7.0
XDebug version: 2.4.0
Adapter version: 1.7.1

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name"             : "PHP Web Application : XDebug",
            "type"             : "php",
            "request"          : "launch",
            "port"             : 9000,
            "serverSourceRoot" : "E:\\Development\\vps\\LeCoterie\\LeCoterie-Website"
        }
    ]
}

XDebug is working, however when verifying how XDebug works within vscode-php-debug versus PHPStorm I see a difference which causes issues with Laravel.

Basically, when I debug via PHPStorm, Laravel is using a plethora of Vendor items, of which some throw exceptions which are handled within the backend of PHPStorm (Testing for RegEx, etc) and doesn't cause any issues.

When I debug via VSCode, the exceptions are caught and by doing so actually stops the application from running as expected.

I am not sure how PHPStorm does it, but would there be any way of excluding paths from debugging, or adding in Exceptions types to be excluded from debugging.

Path mapping is broken (Windows to Unix)

From @Heresiarch88

Your launch.json:

    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "serverSourceRoot": "/var/www/test",
            "localSourceRoot": "C:/Users/pettol/Development/Web/wp/www/test",
            "log": true
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

XDebug php.ini config:

zend_extension = /usr/lib/php/20151012/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_host = "10.0.2.2"
xdebug.remote_port = 9000
;debug.remote_connect_back = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = req
xdebug.remote_autostart = 1

XDebug logfile (from setting xdebug.remote_log in php.ini):

Log opened at 2016-07-20 08:47:19
I: Connecting to configured address/port: 10.0.2.2:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/test/index.php" language="PHP" xdebug:language_version="7.0.8-4+deb.sury.org~precise+1" protocol_version="1.0" appid="2393" idekey="www-data"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

<- feature_set -i 1 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>

<- feature_set -i 2 -n max_children -v 10000
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>

<- feature_set -i 3 -n max_data -v 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_data" success="1"></response>

<- breakpoint_list -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4"></response>

<- breakpoint_set -i 5 -t line -f file:///c:/Users/pettol/Development/Web/wp/www/test/index.php -n 3
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="23930001"></response>

<- breakpoint_set -i 6 -t line -f file:///c:/Users/pettol/Development/Web/wp/www/test/index.php -n 2
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="6" id="23930002"></response>

<- breakpoint_list -i 7
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="7"><breakpoint type="line" filename="file:///c:/Users/pettol/Development/Web/wp/www/test/index.php" lineno="2" state="enabled" hit_count="0" hit_value="0" id="23930002"></breakpoint><breakpoint type="line" filename="file:///c:/Users/pettol/Development/Web/wp/www/test/index.php" lineno="3" state="enabled" hit_count="0" hit_value="0" id="23930001"></breakpoint></response>

<- breakpoint_list -i 8
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="8"><breakpoint type="line" filename="file:///c:/Users/pettol/Development/Web/wp/www/test/index.php" lineno="2" state="enabled" hit_count="0" hit_value="0" id="23930002"></breakpoint><breakpoint type="line" filename="file:///c:/Users/pettol/Development/Web/wp/www/test/index.php" lineno="3" state="enabled" hit_count="0" hit_value="0" id="23930001"></breakpoint></response>

<- breakpoint_set -i 9 -t exception -x *
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="9" id="23930003"></response>

<- run -i 10
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="10" status="stopping" reason="ok"></response>

<- stop -i 11
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stop" transaction_id="11" status="stopped" reason="ok"></response>
"xdebug.log" [readonly] 2067L, 111377C

Debug adapter process has terminated unexpectedly

This happens when starting "Listen for XDebug". In the Developer Console of vscode there are Exceptions thrown:

[uncaught exception]: Error: read ECONNRESET
...
Error: read ECONNRESET
    at exports._errnoException (util.js:837)
    at Pipe.onread (net.js:544)
...
Uncaught Error: read ECONNRESET
    exports._errnoException @   util.js:837
    onread  @   net.js:544
...
Der Debugadapterprozess wurde unerwartet beendet.
    e.doShow    @   messageService.ts:147
    e.show  @   messageService.ts:131
    t.onServerExit  @   rawDebugSession.ts:324
    (anonymous function)    @   rawDebugSession.ts:218
    emitTwo @   events.js:92
    emit    @   events.js:172
    ChildProcess._handle.onexit @   internal/child_process.js:200

PHP version: 5.4.45-1~dotdeb+7.1
XDebug version: v2.3.3
Adapter version: 1.9.3

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "serverSourceRoot": "/usr/local/vufind2",
            "localSourceRoot": "${workspaceRoot}",
            "log": true,
            "stopOnEntry": true
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

No debug console output in VS Code

PHP version: 7.0.6
XDebug version: 2.4.0
Adapter version: 1.9.1

Your launch.json:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        }    
    ]
}

XDebug php.ini config:

 [XDebug]
 zend_extension = G:\xampp\php\ext\php_xdebug.dll
 xdebug.remote_autostart = "On"
 xdebug.remote_enable = "On"
 xdebug.remote_handler=dbgp
 xdebug.remote_mode=req
 xdebug.remote_host=127.0.0.1
 xdebug.remote_port=9000
 xdebug.remote_log = G:\xampp\tmp\xdebug.log

XDebug logfile (from setting xdebug.remote_log in php.ini):

> Log opened at 2016-06-11 09:44:12
> I: Connecting to configured address/port: 127.0.0.1:9000.
> I: Connected to client. :-)
> -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///G:/xampp/htdocs/PHP/Hello%20World/helloworld.php" language="PHP" xdebug:language_version="7.0.1-dev" protocol_version="1.0" appid="4760" idekey="Malte"><engine version="2.4.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>
> 
> <- feature_set -i 1 -n max_depth -v 1
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="max_depth" success="1"></response>
> 
> <- feature_set -i 2 -n max_children -v 9999
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_children" success="1"></response>
> 
> <- feature_set -i 3 -n max_data -v 0
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_data" success="1"></response>
> 
> <- breakpoint_list -i 4
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="4"></response>
> 
> <- breakpoint_set -i 5 -t line -f file:///g:/xampp/htdocs/PHP/Hello%20World/helloworld.php -n 3
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="47600004"></response>
> 
> <- breakpoint_list -i 6
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="6"><breakpoint type="line" filename="file:///G:/xampp/htdocs/PHP/Hello%20World/helloworld.php" lineno="3" state="enabled" hit_count="0" hit_value="0" id="47600004"></breakpoint></response>
> 
> <- breakpoint_list -i 7
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_list" transaction_id="7"><breakpoint type="line" filename="file:///G:/xampp/htdocs/PHP/Hello%20World/helloworld.php" lineno="3" state="enabled" hit_count="0" hit_value="0" id="47600004"></breakpoint></response>
> 
> <- run -i 8
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="8" status="break" reason="ok"><xdebug:message filename="file:///G:/xampp/htdocs/PHP/Hello%20World/helloworld.php" lineno="3"></xdebug:message></response>
> 
> <- stack_get -i 9
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="9"><stack where="{main}" level="0" type="file" filename="file:///G:/xampp/htdocs/PHP/Hello%20World/helloworld.php" lineno="3"></stack></response>
> 
> <- context_names -i 10 -d 0
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="10"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>
> 
> <- context_get -i 11 -d 0 -c 0
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="11" context="0"><property name="$var1" fullname="$var1" type="uninitialized"></property><property name="$var2" fullname="$var2" type="uninitialized"></property></response>
> 
> <- run -i 12
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="12" status="stopping" reason="ok"></response>
> 
> <- stop -i 13
> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stop" transaction_id="13" status="stopped" reason="ok"></response>
> 
> Log closed at 2016-06-11 09:44:14

Adapter logfile (from setting "log": true in launch.json):

<- launchResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 2,
  command: 'launch',
  success: true }
new connection 1
<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'started', threadId: 1 } }
-> threadsRequest
{ type: 'request', seq: 3, command: 'threads' }
<- threadsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 3,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 1, name: 'Request 1 (12:50:47 PM)' } ] } }
<- initializedEvent
InitializedEvent { seq: 0, type: 'event', event: 'initialized' }
-> setBreakpointsRequest
{ type: 'request',
  seq: 4,
  command: 'setBreakpoints',
  arguments: 
   { source: { path: 'g:\\xampp\\htdocs\\PHP\\Hello World\\helloworld.php' },
     lines: [ 3 ],
     breakpoints: [ { line: 3 } ] } }

<- setBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 4,
  command: 'setBreakpoints',
  success: true,
  body: { breakpoints: [ { verified: true, line: 3 } ] } }
-> setFunctionBreakpointsRequest
{ type: 'request',
  seq: 5,
  command: 'setFunctionBreakpoints',
  arguments: { breakpoints: [] } }
<- setFunctionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 5,
  command: 'setFunctionBreakpoints',
  success: true,
  body: { breakpoints: [] } }
-> setExceptionBreakpointsRequest
{ type: 'request',
  seq: 6,
  command: 'setExceptionBreakpoints',
  arguments: { filters: [] } }
<- setExceptionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 6,
  command: 'setExceptionBreakpoints',
  success: true }

-> configurationDoneRequest
{ type: 'request', seq: 7, command: 'configurationDone' }
<- configurationDoneResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 7,
  command: 'configurationDone',
  success: true }
<- stoppedEvent
StoppedEvent {
  seq: 0,
  type: 'event',
  event: 'stopped',
  body: { reason: 'breakpoint', threadId: 1, allThreadsStopped: false } }
-> threadsRequest
{ type: 'request', seq: 8, command: 'threads' }
<- threadsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 8,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 1, name: 'Request 1 (12:50:47 PM)' } ] } }
-> stackTraceRequest
{ type: 'request',
  seq: 9,
  command: 'stackTrace',
  arguments: { threadId: 1, startFrame: 0, levels: 20 } }

<- stackTraceResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 9,
  command: 'stackTrace',
  success: true,
  body: 
   { stackFrames: 
      [ StackFrame {
          id: 1,
          source: 
           Source {
             name: 'helloworld.php',
             path: 'G:\\xampp\\htdocs\\PHP\\Hello World\\helloworld.php',
             sourceReference: 0 },
          line: 3,
          column: 1,
          name: '{main}' } ] } }
-> scopesRequest
{ type: 'request',
  seq: 10,
  command: 'scopes',
  arguments: { frameId: 1 } }
<- scopesResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 10,
  command: 'scopes',
  success: true,
  body: 
   { scopes: 
      [ Scope { name: 'Locals', variablesReference: 1, expensive: false },
        Scope { name: 'Superglobals', variablesReference: 2, expensive: false },
        Scope {
          name: 'User defined constants',
          variablesReference: 3,
          expensive: false } ] } }

-> variablesRequest
{ type: 'request',
  seq: 11,
  command: 'variables',
  arguments: { variablesReference: 1 } }
<- variablesResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 11,
  command: 'variables',
  success: true,
  body: 
   { variables: 
      [ Variable { name: '$var1', value: 'uninitialized', variablesReference: 0 },
        Variable { name: '$var2', value: 'uninitialized', variablesReference: 0 } ] } }
-> continueRequest
{ type: 'request',
  seq: 12,
  command: 'continue',
  arguments: { threadId: 1 } }
<- continueResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 12,
  command: 'continue',
  success: true }
<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'exited', threadId: 1 } }

Code snippet to reproduce:

<?php

$var1 = 1;
$var2 = 2;

print $var1 + $var2

?>

Mapping more than one path for source code

I was wondering if it's possible to map more than one path in vscode?
I'm working with Vagrant to develop a WordPress theme, and I'm using two shared folders on the guest.
I'm sharing one folder for the root of WordPress installation called www and the other one which is in the same path called main, shared on the guest within themes folder of WordPress installation.

Vagrantfile:

config.vm.synced_folder "./www/", "/var/www", :mount_options => ["dmode=777", "fmode=666"]
config.vm.synced_folder "./main", "/var/www/wp-content/themes/main", :mount_options => ["dmode=777", "fmode=666"]

The problem is with the current launch.json file I'm not able to define two paths for my source codes, and when I'm debugging, VSCode doesn't hit the breakpoints anywhere in the main folder!

Take a look at the hierarchy below:

Folder Hierarchy

It's worth mentioning I'm currently achieving this using Sublime Text, but I'd like to work in VSCode instead.

Sublime Text project settings:

{
    "settings": {
        "xdebug": {
            "path_mapping": {
                "/var/www/wp-content/themes/main" : "/Users/[user]/Documents/[project]/main",
                "/var/www" : "/Users/[user]/Documents/[project]/www",
             },
             "super_globals": true,
             "close_on_stop": true
        }
    }
}

Extra info:

PHP version: 5.6.14-1
XDebug version: 2.3.3

Your launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "serverSourceRoot": "/var/www",
            "localSourceRoot": "/Users/[user]/Documents/[project]/www"
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

Thanks in advance.

Amin

Remote host debugging not working

Hey Felix,

After getting to test with a project that isn't the included testproject I noticed that localSourceRoot was not being resolved properly when given an absolute path.

serverSourceRoot: /var/www/
localSourceRoot: /Developer/project/

See the screenshot below where the cwd of the adapter source directory was being combined with my serverSourceRoot. I imagine the actual project cwd is used when the adapter isn't being debugged?

screen shot 2016-01-11 at 6 36 56 pm

This wasn't an issue when working with the testproject because it was relative to the adapter's source directory.

some expression on watch can not expand

xdebugwatch

hi. first, thank you. who made this awesome app.

in my screenshot, first block and second block are same object reference.

and local variable $this->defaultSettings is expandable own array elements,
but $this expand defaultSettings expression on watch, can not. T_T

I'm reading xdebug.log, and first VARIABLES command is 'eval', second WATCH is 'property_get', maybe.

I don't know about xdebug well, so don't know it is bug or original operations...

but i used often watch more than variables...
cause too many variables makes me hard to find i want.
so it's operation can be changeable, i want to... T_T

sorry about that my poor english :D


PHP version: 7.0 fpm (PHP Version 7.0.8-4+deb.sury.org~trusty+1)
XDebug version: 2.4.0
Adapter version: 1.9.4

Your launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9001,
"log": false,
"stopOnEntry": false,
"serverSourceRoot": "/home/mike/myapp",
"localSourceRoot": "${workspaceRoot}"
}
]
}

XDebug php.ini config:
zend_extension=xdebug.so
xdebug.default_enble=1
xdebug.profiler_enable=0
xdebug.var_display_max_data=512
xdebug.collect_assignments=1
xdebug.collect_includes=1
xdebug.collect_params=4
xdebug.collect_return=1
xdebug.collect_vars=1
xdebug.coverage_enable=0
xdebug.max_nesting_level=512
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
xdebug.remote_host=127.0.0.1 ; ssh tunnel
xdebug.remote_port=9001
output_buffering=0
xdebug.remote_log="/tmp/xdebug.log"
xdebug.show_exception_trace=0
xdebug.show_local_vars=1
xdebug.cli_color=0
xdebug.scream=0
xdebug.var_display_max_depth=-1
xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1

XDebug logfile (from setting xdebug.remote_log in php.ini):
attachment

Adapter logfile (from setting "log": true in launch.json):

Role of XDEBUG_SESSION cookie

I'm a bit confused with the role of this XDEBUG_SESSION cookie. It is not mentioned anywhere in the documentation of this plugin, but in my case, I managed to make it work only when this cookie is present and it has this specific value: 58027742. Now... why this value?
Before giving this plugin a shot, I was experimenting with PHP Tools for Visual Studio. And when I was launching my project using that one, it would open a browser with XDEBUG_SESSION_START=58027742 in the end. It is weird, but the only way I can have debugging with Visual Studio Code and vscode-php-debug plugin is to append this to my page url ?XDEBUG_SESSION_START=58027742
Any ideas?

XDebug dissapear after click on Step Over (F10) button after updating to Version 1.2.0

From @slaveofcode on June 7, 2016 4:44

  • VSCode Version: 1.2.0
  • OS Version: Ubuntu 14.04

Steps to Reproduce:

  1. Start debugging F5 (xdebug)
  2. Go to browser and refresh url related to the breakpoint
  3. Debug catched on breakpoint
  4. Click on Step Over F10
  5. Step Over button disabled, looks like not active / not available
  6. List Variables on the left side was gone, but Call Stack values still exist

Copied from original issue: microsoft/vscode#7294

Remote host debugging not working

I'm trying to make this work with the zero config chrome extension for debug but it doesn't stop on the breakpoints. I can see in the callstack that something happened but it then disappears.
I also have a custom local domain (not localhost) and I'm using an idekey value. Are this options and way of debugging currently supported?

What is the idekey ??

Hi, I want to setup remote debugging and I need to know what is the idekey for vscode.

Debugger hits removed breakpoints on Windows

Issue: When I hit the first breakpoint on line 4, then remove the breakpoint on line 4 and click continue, I will still keep hitting what used to be the breakpoint on line 4.

When I do exactly the same thing with XDebug in Atom, this doesn't happen.

PHP version: 5.6.16
XDebug version: php_xdebug-2.4.0-5.6-vc11-x86_64.dll
Adapter version:

Your launch.json: link

XDebug php.ini config: link

XDebug logfile (from setting xdebug.remote_log in php.ini): link

Adapter logfile (from setting "log": true in launch.json): Sorry for the weird indents

Code snippet to reproduce:

<?php

for( $i = 0; $i < 2; $i++ ){
    echo $i;
}

phpinfo();

?>

Debugger loses connection

Whenever I try to debug I quickly lose connection after multiple Requests. So for instance I see Request 2 & 3 listed and then the connection is dropped. I'm not sure if there's any other info I can give you to help out but let me know what you need.

Debugging on VM not working

i am trying to debug an application running on a local vm, that already has xdebug installed and tested to run using sublime text 3. so i recently installed Visual Code and i am checking out this extension.

i spent 3-4 hours on this but nothing worked:

launch.json file:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "serverSourceRoot": "/home/vagrant/Code/wfp/laravel",
            "localSourceRoot": "/Users/samirkhattar/Code/wfp/laravel",
            "port": 9000,
            "log": true
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "serverSourceRoot": "/home/vagrant/Code/wfp/laravel",
            "localSourceRoot": "/Users/samirkhattar/Code/wfp/laravel"
        }
    ]
}

php.ini config

zend_extension="/home/vagrant/xdebug/modules/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_log="/var/log/xdebug/xdebug.log"

server logs aren't displaying anything ..

extension log:

<- launchResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 2,
  command: 'launch',
  success: true }
<- threadEvent
ThreadEvent {
  seq: 0,
  type: 'event',
  event: 'thread',
  body: { reason: 'started', threadId: 1 } }
-> threadsRequest
{ type: 'request', seq: 3, command: 'threads' }
<- threadsResponse
Response {
  seq: 0,
 type: 'response',
  request_seq: 3,
  command: 'threads',
  success: true,
  body: { threads: [ Thread { id: 1, name: 'Request 1 (1:40:30 AM)' } ] } }
<- initializedEvent
InitializedEvent { seq: 0, type: 'event', event: 'initialized' }
-> setBreakpointsRequest
{ type: 'request',
  seq: 4,
  command: 'setBreakpoints',
  arguments: 
   { source: { path: '/Users/samirkhattar/Code/wfp/laravel/app/Http/routes.php' },
     lines: [],
     breakpoints: [] } }
<- setBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 4,
  command: 'setBreakpoints',
  success: true,
  body: { breakpoints: [] } }
-> setFunctionBreakpointsRequest
{ type: 'request',
  seq: 5,
  command: 'setFunctionBreakpoints',
  arguments: { breakpoints: [] } }
<- setFunctionBreakpointsResponse
Response {
  seq: 0,
  type: 'response',
  request_seq: 5,
  command: 'setFunctionBreakpoints',
  success: false,
  message: 'request \'setFunctionBreakpoints\': unrecognized request',
  body: 
   { error: 
      { id: 1014,
        format: 'request \'setFunctionBreakpoints\': unrecognized request',
        sendTelemetry: true } } }

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.