【问题标题】:Echo statements in Yocto recipe not printing to terminalYocto 配方中的 Echo 语句未打印到终端
【发布时间】:2021-11-03 00:09:46
【问题描述】:

我正在尝试通过打印消息来调试 Yocto 配方中的 do_compile_append 函数:

do_compile_append() {
    for i in 1 2 3 4 5
    do
        echo "My yocto Looping ... number $i"
    done
}

在这个例子中,我添加了一个循环来在构建过程中回显一些消息。但是,当我运行 bitbake 来构建它时,我没有看到这些消息输出到我的终端。

输出记录在哪里?

【问题讨论】:

  • 你可以在 'log.do_compile*' 找到。顺便说一句,您还可以检查“bitbake -e RECIPE”的输出。

标签: yocto bitbake


【解决方案1】:

Bitbake 提供了在 Shell Scrit 代码中使用的日志记录功能。

您可以查看许多配方默认继承的poky/plain/meta/classes/logging.bbclass

函数有:bbplainbbnotebbwarnbberrorbbfatalbbdebug

因此,您可以使用bbdebug "My yocto Looping ... number $i" 在终端中打印输出。

【讨论】:

    【解决方案2】:

    默认情况下,所有执行任务的日志都存储在${WORKDIR}/temp/log.do_xxx中。对于您的配方,您可以在${WORKDIR}/temp/log.do_compile 中检查您的调试输出。

    要查看终端上的输出,您应该使用 bbclass poky/plain/meta/classes/logging.bbclass 下面的特殊函数,例如 bbdebug "My yocto Looping ... number $i"

    【讨论】:

      【解决方案3】:

      要查看自己的调试,请执行以下操作:

      1

      将以下指令添加到您的配方文件中

      inherit logging
      

      2

      在任何函数中,使用以下命令打印调试(黄色警告颜色下)。您可以使用${VARIABLE-ID} 引用shell 中定义的环境变量。

      do_compile_append(){
          bbwarn "Hello, this is a debug message from ${USER}"
      }
      

      【讨论】:

        【解决方案4】:

        如果 bitbake 运行 Python,您将需要以这种方式编写日志记录:

        inherit logging
        
        ...
        
        do_fetch_append(){
            bb.warn("Hello")
        }
        

        它会在日志中显示如下:

        WARNING: xxxx-x.xx-xx do_fetch: Hello
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多