У меня возникли проблемы с получением точек останова пользовательского режима в 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
Иногда срабатывает точка останова. Иногда это не так (за исключением того, что у меня есть доказательства того, что поток вернулся). Это делает отладку действительно разочаровывающей, поскольку я никогда не знаю, будет ли что-то работать. Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: речь идет не о точках останова для конкретных потоков, в моем примере я только меняю поток, чтобы взять стек вызовов, потому что стек вызовов показывает мне адрес, на котором мне нужно остановиться. На самом деле я хочу сломаться всякий раз, когда этот адрес попадает.