はじめに
- yoctoのデバッグをしたい人向け
方法
- .bb/.bbappendには、以下のような文を挿入する
- 1はログレベル。任意の数字を指定可能。
bbdebug 1 "message"
- .bbclassには、以下のような文を挿入する
- 1はログレベル。任意の数字を指定可能。
bb.debug(1, "message")
- bitbakeに-Dオプションを指定することでデバッグログが出力される
- Dの数で出力するログレベルが指定できる
- -D=ログレベル1。ログレベル1以下のデバッグログを表示する。
- -DD=ログレベル2。ログレベル2以下のデバッグログを表示する。
- recipe-nameは任意のrecipe名
- Dの数で出力するログレベルが指定できる
bitbake -D recipe-name
bitbake -DD recipe-name
例
- 適当なbbファイルにデバッグ文を追記する
- ca-certificates_20190110.bbにログレベル1のデバッグ文を追記する
- do_install_append()は、do_installの後に処理するための関数
takeshi@X250:~/yocto/poky/build$ cat ../meta/recipes-support/ca-certificates/ca-certificates_20190110.bb | tail -n 3
do_install_append() {
bbdebug 1 "bb: hello"
}
- 適当なbbclassにデバッグ文を追記する
- kernelsrc.bbclassにログレベル2のデバッグ文を追記する
takeshi@X250:~/yocto/poky/build$ cat ../meta/classes/kernelsrc.bbclass | tail -n 3
python () {
bb.debug(2, "bbclass: hello")
}
- bitbake
- -Dと-DDでデバッグ出力が違う
- -Dでは、ログレベル1のデバッグ文が出力された
- -DDでは、ログレベル1とログレベル2のデバッグ文が出力された
- -Dと-DDでデバッグ出力が違う
takeshi@X250:~/yocto/poky/build$ bitbake -D core-image-minimal | grep "hello"
DEBUG: ca-certificates-20190110-r0 do_install: bb: hello
takeshi@X250:~/yocto/poky/build$ bitbake -DD core-image-minimal | grep "hello"
DEBUG: /home/takeshi/yocto/poky/meta/recipes-kernel/perf/perf.bb: bbclass: hello
DEBUG: ca-certificates-20190110-r0 do_install: bb: hello
注意
- .bb/.bbappendにはbbdebugを使用すると説明したが、正確にはシェルスクリプトで処理を記載する場合にbbdebugを使用する。
- .bbclassにはbb.debugを使用すると説明したが、正確にはpythonスクリプトで処理を記載する場合にbb.debugを使用する。
- yoctoでは、pythonスクリプト/シェルスクリプトを選択して利用できるが、多くの場合、.bb/.bbappendはシェルスクリプト、.bbclassはpythonスクリプトで記述されている。
- sstate-cacheを使用している場合、前回ビルドの一部使用するため、デバッグログが出力されない場合がある。