当我进行内核调试时,我无法让用户模式断点在 windbg 中命中。我知道我必须在目标进程的上下文中设置用户模式断点,但这似乎仍然不能可靠地工作。有时它会起作用,但我无法理解是什么变量使它有时起作用,但在其他情况下不起作用。这就是我正在做的事情。
1) !process <process> 0x17, then find a thread that I am curious
about. See that the thread is in mixed user/kernel callstack,
identify return address I want to break on.
2) .process /r /p <process>, to change to the target process context
3) .thread <thread>, to change to the thread identified in step (1)
4) bp <addr>, to break on that particular address I care about
5) g
有时断点命中。有时它不会(除非我有证据表明线程已经返回)。这使得调试非常令人沮丧,因为我永远不知道事情是否会奏效。谢谢你的帮助。
编辑:这与线程特定的断点无关,在我的示例中,我只更改线程以获取调用堆栈,因为调用堆栈向我显示了我需要中断的地址。实际上,每当该地址被击中时,我都想中断。