我正在尝试通过打印消息来调试 Yocto 配方中的
do_compile_append
函数:
do_compile_append() {
for i in 1 2 3 4 5
do
echo "My yocto Looping ... number $i"
done
}
在此示例中,我添加了一个循环来在构建过程中回显一些消息。但是,当我运行
bitbake
来构建它时,我没有看到这些消息输出到我的终端。
输出记录在哪里?
Bitbake 提供了在 Shell 脚本代码中使用的日志记录功能。
你可以看看
poky/plain/meta/classes/logging.bbclass
,它是很多菜谱默认继承的。
功能有:
bbplain
、bbnote
、bbwarn
、bberror
、bbfatal
、bbdebug
因此,您可以使用
bbdebug "My yocto Looping ... number $i"
在终端中打印输出。
以下是查看您自己的调试的方法:
将以下指令添加到您的配方文件中
inherit logging
在任何函数中,使用以下命令打印调试(在黄色警告颜色下)。您可以使用
${VARIABLE-ID}
引用 shell 中定义的环境变量。
do_compile_append(){
bbwarn "Hello, this is a debug message from ${USER}"
}
默认情况下,所有已执行任务的日志都存储在
${WORKDIR}/temp/log.do_xxx
中。对于您的配方,您可以在 ${WORKDIR}/temp/log.do_compile
中检查调试输出。
要在终端上查看输出,您应该使用下面的 bbclass
poky/plain/meta/classes/logging.bbclass
中的特殊函数,如下所示 bbdebug "My yocto Looping ... number $i"
如果 bitbake 运行 Python,您将需要这样编写日志记录:
inherit logging
...
do_fetch_append(){
bb.warn("Hello")
}
它将在日志中显示如下:
WARNING: xxxx-x.xx-xx do_fetch: Hello
在recipe中使用
bbnote "...."
或在python中使用bb.note("...")
并运行bitbake -v
对我来说,在
bbwarn
中使用 do_compile:append()
是有效的。您可以使用 ${...}
: 记录环境变量
do_compile:append(){
bbwarn "Hello world ${USER}"
}