Jump to content

How to debug plugins during development?


hudejo

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
    • Our picks

      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Thanks
          • Like
        • 3 replies
      • 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
        • 26 replies
    ×
    ×
    • Create New...