Jump to content
Ultimaker Community of 3D Printing Experts
  • Sign Up
hudejo

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?

Thanks!

Share this post


Link to post
Share on other sites
Posted · How to debug plugins during development?

What OS are you developing on?

Share this post


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

Share this post


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.

Share this post


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.

Share this post


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

Share this post


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

Share this post


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.

 

Share this post


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

 

 

 

Share this post


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

×
×
  • Create New...