记录 CPU ARM 中的寄存器更改 Linux

log CPU register changes in ARM Linux

我想知道如何在 ARM linux 中监视应用程序的多个寄存器更改。我知道我必须调试它,但我如何自动记录 ARM 中的所有寄存器更改 linux?

我知道使用 gdb 中的 watch 命令我可以做到这一点,但是是否可以制作一个小的 c 代码,它只 运行 一个像调试器这样的应用程序,并记录它的寄存器变化?

简单的说,我想监控CPU ARMlinux寄存器的变化。因此,如果我 运行 一个应用程序,我想监视它的所有寄存器更改。

假设我想监控 R14。当应用程序 运行ning.

时,我想记录 R14 寄存器中的所有更改和值

在 GDB 中,您可以打印 cpu 个寄存器的值,

info registers 显示所有寄存器;

info registers <reg_name>

仅显示寄存器 <reg_name>

此外,

info all-registers

您可以通过它获得您感兴趣的寄存器名称——对于查找特定于平台的寄存器(如在 ARM 上)非常有用

P.S。 如果您正在寻找汇编代码来阅读 cpu reg。那么这个帖子可能会对你有所帮助 http://www.keil.com/forum/19829/

一种方法是使用 gdb 单步执行您的程序,记录每个步骤之间 info all-registers 的输出。在我看来,自动化这应该不是一个大问题。

但是,您的程序 运行 时间会 长得多