TipsAndTricks/DebuggingBitbakeInPudb: Difference between revisions

From Yocto Project
Jump to navigationJump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 30: Line 30:
This allows me to sprinkle programmatic breakpoints wherever I want.
This allows me to sprinkle programmatic breakpoints wherever I want.
If you have a better/preferred way to step through bitbake, feel free to add/change this document.
If you have a better/preferred way to step through bitbake, feel free to add/change this document.
= Debugging python in metadata with pudb =
Now, this is kinda out there but you can do it.
<br>
My example is definitely a tad contrived but here goes.  Suppose you want to see the state of things in the pudb debugger from a .inc file. As our example let's put the following at the top of quilt-native.inc, just after the line <code>EXTRA_OECONF = "--disable-nls"</code>:
<code>
python () {
    import sys
    from pudb import set_trace as bp
    i=5
    for j in range(i):
        print("\nCOWZ IN QUILT_NATIVE.INC\n")
        bp()
    print("\n VERSION=",sys.version,"\n")
}
</code>
If I then run
<code>
  python3 -m pudb.run $(which bitbake)  quilt-native
</code>
I will break in the python in the metadata and be able to stop through it and watch j=0,1,... up to 4.
Looks like this:
[[File:Screen_Shot_2017-02-03_at_3.04.04_PM.png|700px]]

Latest revision as of 23:14, 3 February 2017

How to debug bitbake itself with pudb

I recently had the need to debug bitbake and toaster to figure out why toaster was no longer able to save event information to it's database.

It turned out that I wanted to step through a number of the lib/bb/* files to see how the server was being setup.

What I did


. ./poky/oe-init-build-env
. toaster start webport=0.0.0.0:8000

This set up the toaster webserver to run.

Then my debug test:


python3 -m pudb.run $(which bitbake)  quilt-native

I was looking at changes to bitbake/lib/bb/main.py. So, in that file I could set up breakpoints in code like so:


from pudb import set_trace as bp
...
...
bp()
...
...

This allows me to sprinkle programmatic breakpoints wherever I want. If you have a better/preferred way to step through bitbake, feel free to add/change this document.

Debugging python in metadata with pudb

Now, this is kinda out there but you can do it.
My example is definitely a tad contrived but here goes. Suppose you want to see the state of things in the pudb debugger from a .inc file. As our example let's put the following at the top of quilt-native.inc, just after the line EXTRA_OECONF = "--disable-nls":


python () {
   import sys
   from pudb import set_trace as bp
   i=5
   for j in range(i):
       print("\nCOWZ IN QUILT_NATIVE.INC\n")
       bp()
   print("\n VERSION=",sys.version,"\n")
}

If I then run


 python3 -m pudb.run $(which bitbake)  quilt-native

I will break in the python in the metadata and be able to stop through it and watch j=0,1,... up to 4. Looks like this:

Screen Shot 2017-02-03 at 3.04.04 PM.png