3

我目前正在调试 Linux ARM 内核,并且一直想知道当 cpu 模式更改(usr、svc、abt 等)时 gdb 是否可能中断。目前,当我不确定我们处于哪种模式时,我通常必须多次查看 psr 寄存器,但也许有更有效的方法,例如模式更改时中断?

我知道我可以在异常向量上设置断点,但这意味着我只检测到特权模式的模式更改,而不是相反。也许有一个命令可以检查 psr 是否更改为 0x10(usr 模式) ?

谢谢

4

1 回答 1

0

所有进程都安排在entry-common.S中。该文件有一个名为arch_ret_to_user. 将其定义为一条BKPT指令,可能以通过/proc.

您通常无法单独使用 CPU 检测到用户模式的切换(您需要支持代码),因为主管代码可以更改任何内容如果您的 CPU 具有该功能, ETM可能有一些方法。

还有一个thread_nofity.h,它在重新安排用户任务时有回调。如果您不需要调试器或在函数上放置一些断点null(){},您可以将其与您自己的逻辑挂钩,您只能在条件意味着时从通知程序调用该函数。

于 2013-03-02T21:47:49.187 回答