如题:
假如有一个函数,从用户态进入内核态,然后从内核态调用了另外一个用户态函数
如何跟踪观察,从内核态的哪个地方调用了用户态函数。怎么下断点观察呢?
用windbg
要在 WINDBG 中下断点,您可以使用 bp 命令。例如,如果您想为函数 foo 设置断点,可以在 WINDBG 的命令提示符下输入以下命令:
bp foo
如果您想为内核态函数设置断点,可以在函数名前面加上 nt! 前缀。例如,如果您想为内核态函数 bar 设置断点,可以在 WINDBG 的命令提示符下输入以下命令:
bp nt!bar
设置完断点后,您可以使用 g 命令启动程序的执行。当程序执行到断点处时,WINDBG 将暂停程序的执行,并进入交互式调试模式。您可以在交互式调试模式下使用 k 命令来查看调用堆栈,从而了解从内核态调用用户态函数的具体过程。
例如,如果您想查看从内核态函数 foo 调用用户态函数 bar 的过程,可以在 WINDBG 的命令提示符下输入以下命令:
bp nt!foo