1

Trying to move to sublime from heavier IDEs. The thing I noticed it lacked was debugging compared to the intellij IDEs. Through research I learned about XDebug and I believe it can provide comparable debugging. However, I'm having trouble setting it up.

Here is what I've done:

  1. Installed sublime 3
  2. Installed package manager
  3. Used package manager to install XDebug
  4. Noticed files were missing so I deleted the package through the package manager
  5. Cloned the repo from martomo (https://github.com/martomo/SublimeTextXdebug)
  6. Placed it in my Packaged folder
    enter image description here

  7. Then I went to XDebug.sublime-settings and I'm not sure how to configure it (what am I linking to, what url does it need, etc...)

    {
        // For remote debugging to resolve the file locations
        // it is required to configure the path mapping
        // with the server path as key and local path as value.
        //
        // Make sure to use absolute path when defining server path,
        // because Xdebug debugger engine does not return symbolic links.
        //
        // Example:
        // "/absolute/path/to/file/on/server" : "/path/to/file/on/computer",
        // "/var/www/htdocs/example/" : "C:/git/websites/example/"
        "path_mapping": {
    
        },
    
        // Determine which URL to launch in the default web browser
        // when starting/stopping a session.
        "url": "",
    
        // An IDE key is used to identify with debugger engine
        // when Sublime Text will start or stop a debugging session.
        //
        // This package does not filter sessions by IDE key,
        // it will accept any IDE key, also ones that do not match this configured IDE key.
        // It is merely used when launching the default web browser with the configured URL.
        "ide_key": "sublime.xdebug",
    
        // Which port number Sublime Text should listen
        // to connect with debugger engine.
        "port": 9000,
    
        // Show super globals in context view.
        "super_globals": true,
    
        // Maximum amount of array children
        // and object's properties to return.
        "max_children": 32,
    
        // Maximum amount of
        // variable data to initially retrieve.
        "max_data": 1024,
    
        // Maximum amount of nested levels to retrieve
        // of array elements and object properties.
        "max_depth": 1,
    
        // Break at first line on session start, when debugger engine has connected.
        "break_on_start": false,
    
        // Break on exceptions, suspend execution
        // when the exception name matches an entry in this list value.
        "break_on_exception": [
            // E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR
            "Fatal error",
            // E_RECOVERABLE_ERROR (since PHP 5.2.0)
            "Catchable fatal error",
            // E_WARNING, E_CORE_WARNING, E_COMPILE_WARNING, E_USER_WARNING
            "Warning",
            // E_PARSE
            "Parse error",
            // E_NOTICE, E_USER_NOTICE
            "Notice",
            // E_STRICT
            "Strict standards",
            // E_DEPRECATED, E_USER_DEPRECATED (since PHP 5.3.0)
            "Deprecated",
            // 0
            "Xdebug",
            // default
            "Unknown error"
        ],
    
        // Always close debug windows and restore layout on session stop.
        "close_on_stop": false,
    
        // Do not show possible password values in context output.
        "hide_password": false,
    
        // Show in output parsed response instead of raw XML.
        "pretty_output": false,
    
        // Always launch browser on session start/stop.
        // Note: This will only work if you have the 'url' setting configured.
        "launch_browser": false,
    
        // When launching browser on session stop do not execute script.
        // By using parameter XDEBUG_SESSION_STOP_NO_EXEC instead of XDEBUG_SESSION_STOP.
        "browser_no_execute": false,
    
        // Do not use the debugging window layout.
        "disable_layout": false,
    
        // Window layout that is being used when debugging.
        "debug_layout" : {
            "cols": [0.0, 0.5, 1.0],
            "rows": [0.0, 0.7, 1.0],
            "cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]]
        },
    
        // Group and index positions for debug views.
        "breakpoint_group": 2,
        "breakpoint_index": 1,
        "context_group": 1,
        "context_index": 0,
        "stack_group": 2,
        "stack_index": 0,
        "watch_group": 1,
        "watch_index": 1,
    
        // Custom gutter icons for indicating current line or enabled/disabled breakpoints.
        //
        // Do not use same icon for following values, because Sublime Text is unable
        // to use the same icon for different scopes, in case there are duplicate icons
        // detected it will fall back to the corresponding icon in the package.
        "breakpoint_enabled": "circle",
        "breakpoint_disabled": "dot",
        "breakpoint_current": "",
        "current_line": "bookmark",
    
        // Path to Python installation on your system.
        // Which is being used to load missing modules.
        //
        // It is recommended to configure your Python path for Sublime Text 2
        // especially on older UNIX systems, where some modules (xml.parsers.expat)
        // might be missing and could improve performance of package.
        //
        // Example:
        // "python_path" : "/usr/lib/python2.7"
        "python_path" : "",
    
        // Show detailed log information about communication
        // between debugger engine and Sublime Text.
        // Log can be found at Packages/User/Xdebug.log
        "debug": false
    }
    
  8. I left the XDebug.sublime-settings file alone and just ran the debugger.

  9. Went to http://localhost:9000 (and nothing happened, it just kind of got stuck loading)

The script I want to debug is in /Users/wf/Desktop (the file is xdebugTest.py)

How should I set up the url? (I tried http://localhost:9000/Users/wf/Desktop/xdebugTest.py and 404)

I'll appreciate any help setting up the debugging parameters.
Thanks you.

1 Answer 1

3

If you were on Github to clone the source, you should have run across the README which, surprisingly, contains important information regarding installing and setting up a working Xdebug system on your server. The first important piece of information you probably missed is that Xdebug is an extension for PHP servers. It's understandable, you were probably in a hurry and wanted to get started no matter what. However, if you'd kept reading the (still aptly-named) README, you would have found links to the xdebug.org website for details on installing the extension on your server, then a comprehensive section entitled Configuration which guides the reader through each item in the .sublime-settings file, in addition to the thoughtful comments which are already provided. Finally, there is a section called Troubleshoot which leads you through starting a session, setting breakpoints and watch expressions, exception handling, customizing the layout, and more. All of which documentation should enable even a PHP developer to get this up and running. Hopefully the next time you're in a similar situation you'll check it out.

Sign up to request clarification or add additional context in comments.

2 Comments

I read the read me, hence why I knew to look at port 9000 and to set the url in the settings doc. However, it didn't do anything which is why I asked. As far as php, I figured the tutorials were just written for php, but the concepts would apply to any language. On that note, is there a way to debug python (or anything) in sublime text?
I make heavy use of IPython both within and outside of Sublime. Install it and all its prereqs on your system, then get SublimeREPL and play around with it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.