TipsAndTricks/DebuggingBitbakeInWingIDE: Difference between revisions

From Yocto Project
Jump to navigationJump to search
No edit summary
No edit summary
Line 15: Line 15:
* Now you need to help the Source Parser know about the bb libs. Add bitbake/libs and poky/script/libs into the Python Path the IDE knows about. Select Project Properties and add those to the PYTHONPATH. <br> [[File:WingAddBBLibs.png|x200px]]
* Now you need to help the Source Parser know about the bb libs. Add bitbake/libs and poky/script/libs into the Python Path the IDE knows about. Select Project Properties and add those to the PYTHONPATH. <br> [[File:WingAddBBLibs.png|x200px]]
* You also need to tell the debugger to start in the build directory. By default, it will start in the directory the file you are debugging is in. e.g. bitbake/bin.<br> [[File:WingSetBuilddir.png|x200px]]
* You also need to tell the debugger to start in the build directory. By default, it will start in the directory the file you are debugging is in. e.g. bitbake/bin.<br> [[File:WingSetBuilddir.png|x200px]]
* Then you can pull up files like main.py and add a breakpoint.  
* Then you can pull up files and add a breakpoint. In this example I put a bp in oe-check-sstate itself.
* Bring up bitbake from the bitbake/bin and right click to say "Debug this file". This will bring up a dialog box and you can type in the target. For example quilt-native.
* Bring up oe-check-sstate from the poky/scripts and right click to say "Debug this file". This will bring up a dialog box and you can type in the target. For example autoconf-native.
** If Wing doesn't recognize a file as python, you can right click on the file and set the type via File Properties.
** If Wing doesn't recognize a file as python, you can right click on the file and set the type via File Properties.
* Then you will hit the bp in oe-check-sstate. <br>
[[File:  |200xpx]]
* and you can step into tinfoil.py which is in bitbake/lib/bb! <br>
[[File: |x200px]]

Revision as of 22:01, 10 March 2017

Why

If you find the pudb environment too bare bones and old fashioned (I do) and wanted a more modern debug experience, you may want to try using the WindIDE debugger: https://wingware.com/. I am pretty sure the same could be done with PyCharm: https://www.jetbrains.com/pycharm/ but I have only done Wing so far. The below assumes you have installed the WingIDE Personal. I used the deb on an ubuntu box.

Goal

I wanted to be able to step through some of the more complex code and see stacks, variables, etc.as well as setting breakpoints. I wanted to be able to do this in bitbake proper aka bitbake/lib/bb/cooker.py for instance, as well as in the metadata e.g. poky/meta/classes/native.bbclass.
--- I managed to be able to do both of the above, but not, unfortunately simultaneously. This may be because I have something misconfigured or for some limitation of the debuggers remote connection ability. This is how I set up the 2 scenarios.

Debug Core Bitbake or a Bitbake Tool

This details how to configure the WingIDE Personal debugger to debug core bitbake (e.g. bitbake/lib/bb/main.py) or a particular tool (e.g. poky/scripts/oe-check-sstate). This is useful if you are trying to understand the program flow or look at some variables w/out adding a bunch of logger.warn(;;;) statements.

  • Turn on the Debuggers ability to accept incoming connections . Edit->Preferences->External/Remote. All I did was accept the defaults and hit the checkbox to turn it on.
    [File:WingRemoteDebugOn.png|x200px]]
  • make a new project
  • set the interpreter to be python3 ->
WingProjectPython.png
  • add the bitbake/bin bitbake/lib and scripts/lib to the project. Right click in the are to the right where the tab says project and select Add Directory....
    WingAddBB.png
  • Now you need to help the Source Parser know about the bb libs. Add bitbake/libs and poky/script/libs into the Python Path the IDE knows about. Select Project Properties and add those to the PYTHONPATH.
    WingAddBBLibs.png
  • You also need to tell the debugger to start in the build directory. By default, it will start in the directory the file you are debugging is in. e.g. bitbake/bin.
    WingSetBuilddir.png
  • Then you can pull up files and add a breakpoint. In this example I put a bp in oe-check-sstate itself.
  • Bring up oe-check-sstate from the poky/scripts and right click to say "Debug this file". This will bring up a dialog box and you can type in the target. For example autoconf-native.
    • If Wing doesn't recognize a file as python, you can right click on the file and set the type via File Properties.
  • Then you will hit the bp in oe-check-sstate.

[[File: |200xpx]]

  • and you can step into tinfoil.py which is in bitbake/lib/bb!

[[File: |x200px]]