如何跟踪QEMU中嵌入式系统的执行情况?

时间:2017-11-09 18:05:53

标签: gdb trace qemu openwrt

我已经为x86构建了OpenWrt,我使用QEMU虚拟地运行它。我试图实时调试这个系统。我需要看到网络流量等等。

我可以远程附加gdb并使用断点逐步执行(大部分)。我真的想要跟踪点。我不想暂停执行和松散的网络流量。当我尝试使用tstart设置跟踪点时,我看到消息" Target不支持此命令"。我做了一些gdb文档的阅读,并且从我可以告诉gdb存根来运行以拦截QEMU中的正常执行不支持跟踪点。

从这里开始,我开始查看其他工具并跑过PANDA(https://github.com/panda-re/panda)。据我所知,PANDA将在日志中捕获完整的系统跟踪并允许重放。我认为这个工具应该做我需要的,但我似乎无法重播结果。我看到了日志,我无法重播它们。

现在,我对实际跟踪正在运行的嵌入式系统可能需要的其他工具/选项感到困惑。有什么好的工具可以推荐吗?或者也许是我错过的另一种方法?

2 个答案:

答案 0 :(得分:1)

如果要查看系统调用和信号,请使用strace。 Strace也可以与运行进程一起使用,如果需要,它可以将输出放在日志文件中。

答案 1 :(得分:0)

在OpenWrt中,可以使用ftrace进行构建。 Ftrace拥有我需要的大部分功能,但不是全部。

要使用ftrace进行构建,必须在构建菜单中选择ftrace选项。此外,还必须启用各种跟踪器选项。

trace-cmd(ftrace)位于menuconfig / Development

跟踪支持位于menuconfig /全局构建设置/使用跟踪支持编译内核,包括:跟踪系统调用,跟踪进程上下文切换和事件,以及函数跟踪器(函数图形跟踪器,动态启用/禁用函数跟踪和函数)探究者)

我还计划构建一个自定义的GDB存根,以便更好地完成这项工作,因为我还希望看到传递给函数的数据而不仅仅是函数调用。