Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remote debug in PyCharm

The issue I'm facing right now:

  • I deploy Python code on a remote host via SSH
  • the scripts are passed some arguments and must be ran by a specific user
  • the PyCharm run/debug configuration that I create connects through SSH via a different user (can't connect with the user that actually runs the scripts)
  • I want to remote debug this code via PyCharm...I managed to do all configuration, I just get permission errors.

Are there any ways on how I can run/debug the scripts as a specific user (like sudo su - user)?

I've read about specifying some Python Interpeter options in PyCharm's remote/debug configuration, but didn't manage to get a working solution.

like image 994
Cata D Avatar asked Mar 02 '16 10:03

Cata D


1 Answers

If you want an easy and more flexible way to get into the PyCharm debugger, rather than necessarily having a one-click "play" button in PyCharm, you can use the debug server functionality. I've used this in situations where running some Python code isn't as simple as running python ....

See the Remote debug with a Python Debug Server docs for more details, but here's a rough summary of how it works:

  1. Upload & install remote debugging helper egg on your server (On OSX, these are found under /Applications/PyCharm.app/Contents/debug-eggs)
  2. Setup remote debug server run configuration: click on the drop-down run configuration menu, select Edit configurations..., hit the + button, choose Python remote debug.
    • The details entered here (somewhat confusingly) tell the remote server running the Python script how to connect to your laptop's PyCharm instance.
    • set Local host name to your laptop's IP address
    • set port to any free port that you can use on your laptop (e.g. 8888)
  3. Now follow the remaining instructions in that dialog box: copy-paste the import and pydevd.settrace(...) statements into your code, specifically where you want your code to "hit a breakpoint". This is basically the PyCharm equivalent of import pdb; pdb.set_trace(). Make sure the changed code is sync'ed to your server.
  4. Hit the bug button (next to play; this starts the PyCharm debug server), and run your Python script just like you'd normally do, under whatever user, environment etc. When the breakpoint is hit, PyCharm should drop into debug mode.
like image 199
m01 Avatar answered Oct 18 '22 04:10

m01