Jump to content
Ultimaker Community of 3D Printing Experts

How to debug plugins during development?


hudejo
 Share

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?

Thanks!

  • 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:

     

    project\
    	Cura\
    		... files from Cura.git ...
    	Uranium\
    		... files from Uranium.git ...
    	libCharon\
    		... files from libCharon.git ...
    	bin\
    		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

    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?

    Hello.

    How can I trace my PostProcessing script?

     

    I add to my script:

     

    import pdb
    ....
    def execute(self, data):
        pdb.set_trace()

     

    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
        pdb._runscript(mainpyfile)
      File "<unit>:\<path>\Python35\lib\pdb.py", line 1546, in _runscript
        self.run(statement)
      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... 

     

    Sorry

     

     

     

  • 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
     Share

    • Our picks

      • Ultimaker showcase | April 2022 | 4pm CEST | 10am EDT
        I'm excited because I've personally produced this showcase event, so if you are curious what else I'm up to nowadays, come check it out and say hi in the chat! It would mean a lot! 
          • Thanks
          • Like
        • 4 replies
      • New here? Get ahead with a free onboarding course
        Hi,
         
        Often getting started is the most difficult part of any process. A good start sets you up for success and saves you time and energy that could be spent elsewhere. That is why we have a onboarding course ready for
        Ultimaker S5 Pro Bundle, Ultimaker S5, Ultimaker S3 Ultimaker 2+ Connect.   
        They're ready for you on the Ultimaker Academy platform. All you need to do to gain access is to register your product to gain free access. 
        Ready? Register your product here in just 60 seconds.
          • Like
        • 11 replies
    ×
    ×
    • Create New...