2014-02-07 29 views
1

我使用Windbg来调试我的用户模式驱动程序(考虑USB)。我的驱动程序包(调试版本,64位)具有内核模式和用户模式代码。该软件包已成功安装在我的目标机器中,并且模块也已加载(因为我可以使用windbg-command进行验证:'lm “)。我在主机上以管理员模式运行Windbg并使用1394火线卡调试目标。是否有必要在内核模式驱动程序中设置一个断点来调试其用户模式计数器部分的功能(使用Windbg)?

在开始应用程序之后,当我尝试在用户模式驱动程序中调试一个函数时,我发现虽然断点已正确设置并启用,但预期函数没有被击中。然后我在内核代码中设置了一个函数的断点(一个经常在启用时会被点击的重复服务程序)。这次,这个内核模式驱动程序的功能打破了,在某些时候,上面设置的用户模式驱动程序功能也被打破了,我可以调试它并遵循代码路径。

再次,当我关闭&重新启动应用程序时,只有当内核模式驱动程序功能断点被启用并命中时,才会触发用户模式驱动程序功能。但是,如果其禁用,则用户模式驱动程序功能未被命中。无论我们在内核模式驱动程序或用户模式驱动程序中设置哪些断点,都会发生这种情况。

为什么这种行为,虽然模块正确加载?我是否需要配置或确保某些东西,以便在启动应用程序时,我不需要依赖内核模式部分?

回答

0

我曾经看到WinDBG在调试用户模式调用时表现出有点奇怪!

一个简单的建议是:如果您在Vista或以上版本上进行调试,请注意有多个会话正在运行。 例如,

Each user logged on as has a different session] 
The services run in session '0' 

这可能是你没有设定正确的会话突破点。

相关问题