【问题标题】:Remote debugging a Windows Service VS2010远程调试一个Windows服务VS2010
【发布时间】:2017-04-11 08:58:28
【问题描述】:

我在我的系统上开发了一个 Windows 服务,并将该服务部署在没有 Visual Studio 的目标机器上。因此,我需要从我的 PC 调试应用程序。我已经知道如何在本地机器上调试 Windows 服务。

我的步骤:

  1. 将完整的 bin 文件夹(包含 .exe 和 .pdb 文件)复制到目标计算机。
  2. 使用InstallUtil.exe(即installUtil.exe "pathToMyServiceEXE/myService.Exe")在目标机器上安装了服务
  3. 启动服务
  4. 已安装 Visual Studio 远程调试应用程序(以“无身份验证模式”启动并选中调试选项)
  5. 附加到 Visual Studio 中的服务(在我的 PC 上运行)

问题:我能够成功连接到目标机器的 windows 服务。 但它找不到符号。

我已经检查了有关同一问题的其他 SO 问题,但到目前为止找不到正确的解决方案。 我尝试了以下方法来解决问题:

  • 打开Tools->Options->Debugging->Symbols 然后将.pdb 文件的路径放在我的本地PC 上。 (没用)
  • 打开 Tools->Options->Debugging->General 并取消选中“仅启用我的代码”。
  • 除了以上两个,我已经确定我在本地PC上运行的是x64版本的远程调试工具、Debug/x64版本的windows服务和debug/x64。

【问题讨论】:

  • 也许在VS中从你的窗口服务源调试+部署appconfig
  • 让调试器告诉你。调试 > Windows > 模块,在显示的列表中找到要调试的模块。右键单击并选择符号加载信息。告诉您它在哪里查找 PDB 文件。
  • @HansPassant:我已经这样做了,但它说 .pdb 文件无效。我认为这个问题是因为我的应用程序在托管代码中,并且我只启动了本地远程调试。我应该在“Windows 身份验证模式”下启动远程调试工具,我这样做了,但后来我无法登录。
  • 好吧,这当然行不通。很难猜出你为什么会考虑尝试这样做,并认为没有必要在问题中不提及它。完全没有意义。
  • @HansPassant:我是第一次尝试进行远程调试,并不完全熟悉该工具。当我发布问题时,我不知道这两种模式适用于不同类型的代码(我认为这只是出于安全目的)。现在我被困在登录到 Windows 身份验证模式的问题上。

标签: c# windows visual-studio-2010


【解决方案1】:

我能给你的最好的建议是在目标机器上使用 WinDBG 调试器——这现在不是最简单的,但从长远来看会得到回报。这是目标机器上的零设置,但需要您学习 WinDBG 的基础知识。这不是微不足道的,但从长远来看会有所回报。

关于为什么不能加载符号:

  1. 可能 PDB 与二进制文件不匹配?
  2. 当前登录用户可能无法访问路径? (如映射驱动器等)
  3. 可能是权限问题?

除此之外,我认为它应该可以工作

【讨论】:

  • 感谢您的推荐。你能推荐任何教程或其他东西吗......到目前为止我发现了什么,我无法理解它如何帮助我调试远程机器应用程序
  • WinDBG 是我所知道的最强大的调试器,但它也有自己的缺陷。这是最好的,因为它几乎可以完成您需要的任何调试任务,并且在大小和设置方面几乎为零,但它也有自己的缺陷,因为它是一个神秘的工具,并且确实需要学习曲线。
  • 在学习如何使用 WinDBG 时,我会推荐:了解如何设置符号环境(.symfix、.sympath 和 .srcpath),b。键入“.hh”并 ENTER 以访问帮助控制台,c。谷歌如何使用 WinDBG 执行特定的调试任务这样做很可能意味着为了在这里解决您的特定问题,您在学习新工具时需要更长的时间,但很可能下次您需要调试某些东西在“客户环境”上,考虑到它的优势,您会更喜欢使用 WinDBG。
猜你喜欢
  • 2012-05-01
  • 2011-07-27
  • 2015-01-09
  • 2021-12-29
  • 2014-05-12
  • 2014-10-25
  • 2010-10-21
  • 1970-01-01
  • 2011-05-06
相关资源
最近更新 更多