没有日志和工具的调试?
Debugging without logs and tools?
我在 git 浏览 raspberry pi 源代码,发现源代码中没有任何日志和 printf。除了日志记录、调试工具(gdb、dbx)之外,还有其他调试技术用于这种场景吗?
对于内核级调试,有大量的日志记录和挂钩调试器(通常通过串行 link),尤其是对于全新代码。过多的日志通常在代码成熟并准备提交给内核的补丁时被剥离。
此外,一种非常常见的调试或理解内核代码的方法是使用 function tracing。这类似于调试构建,GCC 为内核中的每个函数添加了一个函数调用,mcount()
。对于典型的 ftrace 内核构建,mcount()
将编译为 NOP,它将在运行时通过 ftrace 实用程序动态替换。
您可以在内核文档中阅读更多有关 ftrace 设计的信息 here. You can learn more about the information provided by ftrace here,但足以说明它是广泛的。
我在 git 浏览 raspberry pi 源代码,发现源代码中没有任何日志和 printf。除了日志记录、调试工具(gdb、dbx)之外,还有其他调试技术用于这种场景吗?
对于内核级调试,有大量的日志记录和挂钩调试器(通常通过串行 link),尤其是对于全新代码。过多的日志通常在代码成熟并准备提交给内核的补丁时被剥离。
此外,一种非常常见的调试或理解内核代码的方法是使用 function tracing。这类似于调试构建,GCC 为内核中的每个函数添加了一个函数调用,mcount()
。对于典型的 ftrace 内核构建,mcount()
将编译为 NOP,它将在运行时通过 ftrace 实用程序动态替换。
您可以在内核文档中阅读更多有关 ftrace 设计的信息 here. You can learn more about the information provided by ftrace here,但足以说明它是广泛的。