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

Debugging 处理器模式更改时ARM Gdb中断,debugging,linux-kernel,gdb,arm,Debugging,Linux Kernel,Gdb,Arm,我目前正在调试LinuxARM内核,一直在想,当cpu模式改变时(usr、svc、abt等),gdb中是否有可能出现中断。目前,当我不确定我们处于哪种模式时,我通常必须多次查看psr寄存器,但也许有一种更有效的方法,比如中断模式更改 我知道我可以在异常向量上设置断点,但这意味着我只检测到特权模式的模式更改,而不是相反。可能有命令检查psr是否更改为0x10(usr模式) 谢谢所有流程都安排在中。此文件有一个名为arch\u ret\u to\u user的宏。将其定义为BKPT指令,可能通过/p

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

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


谢谢

所有流程都安排在中。此文件有一个名为
arch\u ret\u to\u user
的宏。将其定义为
BKPT
指令,可能通过
/proc
以全局集合为条件

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


还有一种方法可以在重新安排用户任务时进行回调。如果您不需要调试器,或者在一个
null(){}
函数上设置断点,您可以使用自己的逻辑将其挂接起来,而这个函数只有在需要条件时才从通知程序调用。

您真的想断开开关,还是只想知道您当前是在用户空间还是内核空间中运行?如果您只需要稍后的信息,您可以查看您当前的pc,0xC0000000以上的所有内容都是默认的3/1G分割中的内核空间。我不想运行linux内核并在它切换到用户模式时中断,以便检查计划的用户进程。嗯,我可能会中断调度程序,但问题是内核进程的调度方式和我想的一样