2

当我进行内核调试时,我无法让用户模式断点在 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

有时断点命中。有时它不会(除非我有证据表明线程已经返回)。这使得调试非常令人沮丧,因为我永远不知道事情是否会奏效。谢谢你的帮助。

编辑:这与线程特定的断点无关,在我的示例中,我只更改线程以获取调用堆栈,因为调用堆栈向我显示了我需要中断的地址。实际上,每当该地址被击中时,我都想中断。

4

1 回答 1

0

处于进程上下文中有助于破译虚拟地址。

我不记得在上下文中保证进程或线程特定的中断。

使用 bp /p eprocess address 语法来设置进程特定的断点

虽然我没有使用过,但我记得有线程特定的 bps witj bp /t ethread 地址参考文档

于 2017-08-05T04:48:32.680 回答