简体   繁体   中英

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.

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 (eg 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() 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.

I have this (finally) working with ssh RemoteForward open, like so:

ssh -R 5678:localhost:5678 user@<remotehost>

Then start the script in this ssh session. The python script host must connect to localhost:5678 and of course your local pycharm debugger must listen to 5678 (or whatever port you choose)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM