python plugin in debugging mode
-
Dear c4d fellows,
Long ago I wrote a simple plugin for cinema4d in python.
I didn't know how to code python back then, and learned it while writing the plugin.
So I didn't even know how to debug the .pyp file in debugging mode.
Now I decided to improve it. The question is: how to set up a debugging mode (the analogue of visual studio for c4d but for python). Is it possible? (I mean going line by line through pyp file and see the values of local variables in console)Yaroslav.
-
Hi @Yaroslav this is indeed possible however a bit clunky for the moment, but here a full step by step.
- Install pip with
c4dpy -m ensurepip
- Install Python Visual Studio Debugger with
c4dpy -m pip install ptvsd
. - Within Visual Studio in your
launch.json
just set up a basic attach setting, here is mine but for more information see
Python debug configurations in Visual Studio Code.
{ "version": "0.2.0", "configurations": [ { "name": "Cinema 4D: Remote Debugger Attacher", "type": "python", "request": "attach", "connect": { "host": "127.0.0.1", "port": 3000 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "." } ] }, ] }
- The *.pyp plugin should be of course in the same workspace as your
launch.json
. - Edit the *.pyp plugin and write the next code in the first line of your pyp file.
import ptvsd ptvsd.enable_attach(address = ('127.0.0.1', 3000))
- Start Cinema 4D, wait until its UI is loaded, meaning the pyp plugin is loaded, and the client (your script) is attachable from a debugger.
- Run the previously created debug configuration (called
Cinema 4D: Remote Debugger Attacher
). - Put a breakpoint somewhere (like in the Execute of a CommandData) to trigger the BP.
- Enjoy
Note this also works nicely for the script, however for script you should call
ptvsd.wait_for_attach()
after theptvsd.enable_attach
.Cheers,
Maxime. - Install pip with