Debugging mycroft


#1

When making skills or extend the core it is great to have a way to debug while running. Debugging in the THEIA IDE has been one of my wishes, and I have been working on that for some time. I have been trying and trying lots of things and I have experiansed many errors. But now I got something working.

The latest build of Theia-for-Mycroft (only picroft version for now) do have python debugging working and ready to debug mycroft skills and Mycroft core.

To test and/or use install TheiaIDE skill from Mycroft market. If allreddy using the skill remove it and install it again as it then will pull down latest theia-for-mycroft build. https://market.mycroft.ai/skill/theia-ide

How to setup debuging:

First you need to add ptvsd by

mycroft-pip install ptvsd

Then you need to add some lines to /home/pi/mycroft-core/mycroft/skills/main.py

at the top of the file at line 36 add

import ptvsd

at line 46 add

# start remote debug if set true in config
config = Configuration.get()
if config.get('remote-debug', False):
    ptvsd.enable_attach()

Sadly that isnt enough, as the stop-mycroft.sh does not stop corretly if debuging is active and that makes lots of haning processes running and breaks debugging. So some change to that is needed as well

You need to change /home/pi/mycroft-core/mycroft/skills/stop-mycroft.sh

line 56 change to

pkill -SIGINT -f "python3 -m mycroft.*${1}"

line 73 change to

pkill -SIGKILL -f "python3 -m mycroft.*${1}"

Now we are reddy to rock…well to activate debugging add this to mycroft.conf

"remote-debug": true

Restart mycroft and debug is now posible

How to use debug in THEIA IDE:

In THEIA IDE you can now open a skill .py file, and set one or more breakpoints, start the debugger and select Python: Mycroft and start debugging. You can see it is getting the mainthread and all the subthreads

When it hits your breakpoint it will stop and wait. Now you can se where, and what variables and lots of other debug stuff.

Remote debugging from VS-code:

As far as I understands - the changes to mycroft-core should make it posible to use remote debuging (attach) from VS-code and other IDE’s to, so the debugging isnt just for THEIA IDE.
Install Python extension from Mycroft https://marketplace.visualstudio.com/itemdetails?itemName=ms-python.python wich are same plugin as used in THEIA IDE
But I hassnt tryed remote debuging from vscode yet.

Add debug to mycroft-core

Later - if this seems to work well I will make a PR so this stuff can get into mycroft-core making debuging easy for everyone out of the box when using mycroft.

Some issues:

Sometimes when something goes bad there will be some parentless mycroft.skills processes running and that breaks lots of stuff. To get back up restart skills or all as that will kill the parentles processes.

As I see a normal run of mycroft has only one mycroft.skills process, but when debug is set to true there is four extra.

Feedback, discussion and more:

Please give feedback and help getting this even better. Here or on mycroft-chat or on github issue https://github.com/andlo/theia-ide-skill/issues

Happy mycrofting and debuging
/Andreas