我正在使用 Windbg 调试我的用户模式驱动程序(考虑 USB)。我的驱动程序包(调试版本,64 位)同时具有内核模式和用户模式代码。该包已成功安装在我的目标机器中,并且模块也已加载(我可以使用 windbg 命令验证:'lm ')。我在主机上以管理员模式运行 Windbg 并使用 1394 火线卡调试目标。
启动应用程序后,当我尝试在用户模式驱动程序中调试一个函数时,我观察到虽然断点已正确设置和启用,但预期的函数没有被命中。然后我在内核代码中设置了一个函数的断点(一个经常在启用时经常被命中的服务过程)。这次这个内核模式驱动程序函数闯入,并且在某些时候上面设置的用户模式驱动程序函数也闯入,我可以调试它并遵循代码路径。
同样,当我关闭并重新启动应用程序时,只有当内核模式驱动程序函数断点启用并命中时,用户模式驱动程序函数才会被命中。但是,如果它被禁用,则不会触发用户模式驱动程序功能。无论我们在内核模式或用户模式驱动程序上设置断点的功能如何,都会发生这种情况。
为什么会出现这种行为,尽管模块已正确加载?我是否需要配置或确保某些东西,以便在启动应用程序时不需要依赖内核模式部分?