Jump to content

How to debug plugins during development?


Recommended Posts

Posted · How to debug plugins during development?

I am trying to develop a new plugin for the latest Cura (4.3 currently)


I've found the wiki page with some basic information (https://github.com/Ultimaker/Cura/wiki/Plugin-Directory) but could not find any info on how to debug/log during plugin development. 

How do I place breakpoints? How do I log to a console?


  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    Unfortunately, the --debug mode that shows the console output is broken on Windows. So to see the console output you need to run Cura from source. This is a bit involved, but here's my shortcut.


    In a project folder, check out Cura (from https://github.com/ultimaker/cura.git), Uranium (from https://github.com/ultimaker/uranium.git) and libCharon (from https://github.com/ultimaker/libcharon.git), each in thier own folder. Also create a folder named "bin". In that folder, you need to copy a number of files from the Cura 4.3 that you have installed:


    		... files from Cura.git ...
    		... files from Uranium.git ...
    		... files from libCharon.git ...

    Add the full path to the Uranium, libCharon and bin folders to your PYTHONPATH environment variable.


    Then you need to install a couple of python modules through pip or otherwise: colorlog, numpy, pyqt5, pyserial, scipy, trimesh, zeroconf.


    With all that done, you should finally be able to launch cura with ````````````"python cura_app.py" from the Cura folder and get all the console output as Cura starts. With "python -m pdb cura_app.py" you should be able to use the python debugger, but I don't use it much.

    • Thanks 3
    Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    Thanks, this is great help! 

    I was worried that I need to execute those 100+ steps to fully compile Cura. 

    Perhaps someone should post this to the wiki on GitHub.

  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    I'm not sure if I missed any steps; it has been >4 years since I have set up my development environment, but it is still what I use to develop my plugins. It skips compiling CuraEngine, so logically you can't make change to CuraEngine this way.

  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    As I just mentioned in https://github.com/Ultimaker/Cura/issues/6579


    you can happily use cura.exe --debug if you use a bash shell. I think it arrived with either mingw64 or a git installation.

  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    OK, I managed to run it following the instructions from @ahoeben. There were some extra steps needed:


    - It needs Python 3.5.x, 64bit with Python 3.8 I could not install PyQT5.10, just a newer one, that wont work (note that the install page at https://github.com/Ultimaker/Cura/wiki/Running-Cura-from-Source-on-Windows mentions 32 bit python, but I think one of the .pyd files was 64bits.).

    -These dependencies were enough: 

    numpy scipy colorlog zeroconf pyserial PyQt5==5.10 requests

    - Also i needed to install Shapely as described here: https://github.com/Ultimaker/Cura/wiki/Running-Cura-from-Source-on-Windows#python-352

    • Like 1
    • Thanks 1
    Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    Hello all!

    thank you @ahoeben and @hudejo for your instructions!

    I am trying to build a new plugin for Cura and want to debug it as well.
    My computer is running on windows 10 - 64 bit.
    So from both of your posts - here is what i did in order to make it run from source for me, i hope that my summary can help others like you helped me. thanks again :)

    1. Install python 3.5.4 - 64 bit (not 32!)
    2. Have cura 4.3 installation from website (used to retrieve some files later)
      -- from @ahoeben post:
    3. Create a project folder called “curaProject”
    4. Download projects cura, uranium and libCharon into the project folder so they are next to each other (I used versions 4.3 \ 4.3.0)
      From ultimaker github
    5. Additional files from Cura installation:
      create “bin” folder in “curaProject” folder.
      From the Cura installation folder, take the files just like ahoeben wrote (CuraEngine.exe, Arcus.pyd, Savitar.pyd, libgcc_s_seh-1.dll, libgomp-1.dll, libifcoremd.dll, libimalloc.dll, libiomp5md.dll, libmmd.dll, libstdc++-6.dll, libwinpthread-1.dll)
      And copy them to “bin” folder
    6. Add to windows PYTHONPATH the paths to uranium, libCharon and bin folder
    7. Install additional python packages - Python -m pip install numpy scipy colorlog zeroconf trimesh netifaces pyserial PyQt5==5.10 requests
      *** this is a combination from your posts + cura running on windows page - link
    8. Install Shapely package -
      1. Download Shapely‑1.6.4.post2‑cp35‑cp35m‑win_amd64.whl from here - link (https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely) - this is for 64 bit
      2. Install - python -m pip install [path to file]
    9. That’s it, good to go. Now you can run cura_app.py from the cura project
  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?


    How can I trace my PostProcessing script?


    I add to my script:


    import pdb
    def execute(self, data):


    I start Cura with "python3 -m pdb cura_app.py" then press "c" to continue.

    But I don't have stop on my script executing.


  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?

    Good morning,


    My python raise the following error:

    <unit>:\<path>\CuraProject\Cura>python cura_app.py
    Traceback (most recent call last):
      File "cura_app.py", line 29, in <module>
        from cura import ApplicationMetadata
    ImportError: No module named 'cura'


    I'm using the "Ultimaker Cura 4.6" and followed all the steps.


    If i use the -m pbd option:


    <unit>:\<path>\CuraProject\Cura>python -m pdb cura_app.py
    > <unit>:\<path>\curaproject\cura\cura_app.py(11)<module>()
    -> import sys
    (Pdb) c
    Traceback (most recent call last):
      File "<unit>:\<path>\Python35\lib\pdb.py", line 1665, in main
      File "<unit>:\<path>\Python35\lib\pdb.py", line 1546, in _runscript
      File "<unit>:\<path>\Python35\lib\bdb.py", line 431, in run
        exec(cmd, globals, locals)
      File "<string>", line 1, in <module>
      File "<unit>:\<path>\curaproject\cura\cura_app.py", line 11, in <module>
        import sys
    ImportError: No module named 'cura'
    Uncaught exception. Entering post mortem debugging
    Running 'cont' or 'step' will restart the program
    > <unit>:\<path>\curaproject\cura\cura_app.py(11)<module>()
    -> import sys
    (Pdb) cont
    Post mortem debugger finished. The cura_app.py will be restarted
    > <unit>:\<path>\curaproject\cura\cura_app.py(11)<module>()
    -> import sys
    (Pdb) quit



    and i don't know how to continue... 






  • Link to post
    Share on other sites

    Posted · How to debug plugins during development?
    I tried valiantly to load the modules and entities some people recommended here to no avail. So, I finally wrote a few modules to simulate Cura and call my post-processor. This worked great. The solution has been posted to my GitHub. I hope this helps someone out there. Ultimaker Cura Simulator to call Post-processor
  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
          • Like
        • 15 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    • Create New...