ARM Gdb在处理器模式更改时中断

时间:2012-12-07 08:39:43

标签: debugging linux-kernel gdb arm

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

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

由于

1 个答案:

答案 0 :(得分:0)

所有流程都安排在entry-common.S。此文件有一个名为arch_ret_to_user的宏。将其定义为BKPT指令,可能以/proc的全局集为条件。

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

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

相关问题