我最近开始开发 Windows 驱动程序。我想知道它实际上是如何调试我的驱动程序的。我的设置是 --> Win7 作为主机,XP 作为 VMware 上的来宾,我正在通过串口进行调试。
我做过的研究:
我发现只有这个链接说我在谈论的东西很少。
我已经知道调试器如何在单个操作系统上工作,在这种情况下,调试器也在同一个操作系统上,所以它知道哪个进程正在运行。这是可以理解的。但是在这里,调试器在完全不同的操作系统上,完全不同的环境。我只是说file->open source files
,我可以设置断点!!此外,当我加载驱动程序时,它实际上在那里中断。我的意思是为什么../如何?XP的内核如何知道(驱动程序是内核的扩展,至少WDM,不知道WDK)有this
驱动程序的源代码?那也超出了它的控制(环境)?我的意思是我可以打开 10 个带有断点的文件,但它工作得很好,我不能失败/欺骗它。
所以我的想法是,每当我们在 Win7 上向 windbg 添加源时,它都会从该源创建二进制文件,并且每当 XP 要加载任何二进制文件时,它都会检查这是否是 windbg 正在等待的二进制文件。上面链接中令人困惑的是,Vikrant 说调试器询问内核(XP)它是否愿意调试一个进程-> Bus HELLO ...进程在 XP 上运行,windbg 在 Win7 上运行并且不知道name or id
进程. 它有源代码,但是考虑一个由 300 个文件构建的驱动程序的情况,并且只有一个可能是最简单的文件在 windbg 中打开,它与正在运行的驱动程序的源代码如何匹配?