【问题标题】:How can I set a breakpoint in the source code of a windows driver I'm debugging remotely如何在远程调试的 Windows 驱动程序的源代码中设置断点
【发布时间】:2017-12-01 02:28:10
【问题描述】:

我在 Windows 上对内核开发一无所知,取得了很大进步:我可以将 vs2015 调试器附加到远程目标,当我单击 break-all 时,远程计算机冻结,我可以看到 4 个 cpu在我的线程列表中。我可以从 ms 符号服务器加载符号,也可以从我为内核驱动程序的调试构建 pdb 制作的本地副本中加载符号。 但是我如何真正将本地的源代码附加到远程运行的机器上?

我缺少一些搭配。我在本地复制了 pdbs 和驱动程序的源代码,认为远程机器被冻结并且无法访问文件系统。也许我错了。

但无论哪种方式,我都不确定找到内核为驱动程序运行的源代码并在 Visual Studio 中浏览它的机制是什么。我之前从未使用过windbg,所以对它的引用对我没有帮助。

我用谷歌搜索和搜索,我找到的所有信息都让我可以在即时窗口中附加和运行 windbg 命令,但我没有得到将源代码连接到客户端的最后一点调试器,以便我可以设置断点。

有什么想法吗?指向包含这些神奇信息的网页的指针?

谢谢。

【问题讨论】:

  • 源文件绝对应该在您的本地机器上(而不是目标机器上)。您是否阅读过有关如何定位源文件的 VS 文档:msdn.microsoft.com/en-us/library/ms241613.aspx
  • 所以我看了一下,它是面向用户空间调试的,而不是内核调试的,但我还是做了所有的事情,没有任何改变。

标签: visual-studio-2015 windows-10 remote-debugging


【解决方案1】:

好吧,我让它工作了。我认为这更多的是把事情安排得更好。 我将所有源和 pdb 从目标服务器复制到我的调试器/客户端机器上的同一组路径中。将所有符号路径指向本地位置,启动调试器(或者更确切地说,附加)在源文件上执行一个简单的文件->打开,添加断点,触发目标机器上的代码,瞧!调试器在断点处停止。 不确定我昨天做错了什么,但是将路径复制到它们相同的位置似乎已经为我点击了所有部分。

【讨论】:

    【解决方案2】:

    这对我有用: 在您能够构建和部署驱动程序之后: 在VS中单击调试并附加到目标 单击暂停,以便您可以输入调试命令 输入以下命令:

    .srcpath+(源代码路径)

    .sympath+(.pdb 文件的路径;通常带有 .sys)

    现在打开您的源代码并在某处放置一个断点并记下该行。 返回调试命令窗口并输入 bl 以列出断点。 这些断点现在应该显示在列表中。

    这里是一个很好的分步示例的链接: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-

    【讨论】:

      猜你喜欢
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2011-05-13
      • 2022-01-18
      • 2011-08-17
      • 2020-12-18
      相关资源
      最近更新 更多