如何:调试 Windows 服务应用程序

 我来答
千成爰33a3
推荐于2016-10-23 · 超过62用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:115万
展开全部
若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。 然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。 例如,如果附加到 WinLogon 进程,然后停止调试,系统就会暂停,因为没有 WinLogon,系统无法运行。 只能将调试器附加到正在运行的服务。 附加进程会中断服务的当前运行;它并不真正终止或暂停服务的处理。 也就是说,如果开始调试时服务正在运行,则在进行调试时,该服务从技术上说仍处于“已启动”状态,但它的处理已挂起。 附加到服务的进程使您能够调试大多数服务代码,但并非全部;例如,由于服务已经启动,因此不能用这种方法调试服务的OnStart方法中的代码,或调试用于加载服务的Main方法中的代码。 解决此问题的一个方法是:在唯一作用是帮助调试的服务应用程序中创建一个临时服务。 可以将两个服务都安装上,然后启动此“虚拟”服务加载服务进程。 临时服务启动了进程后,就可以使用 Visual Studio 中的“调试”菜单来附加到服务进程。 当附加该进程之后,可以设置断点并使用这些断点来调试代码。 当退出用于附加到该进程的对话框时,实际上已处于调试模式。 您可以使用“服务控制管理器” 开始、停止、暂停和继续您的服务,因此命中已设置的断点。 调试成功后,移除此“虚拟”服务。 说明调试OnStart方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。 有关更多信息,请参见
宇歆sunny
2016-01-06 · 知道合伙人数码行家
宇歆sunny
知道合伙人数码行家
采纳数:374 获赞数:4165
毕业于大连软件学院,软件编程行业2年从业经验,参与多个项目操作,现从业与博远科技程序员

向TA提问 私信TA
展开全部

由于服务必须从服务控制管理器的上下文中运行,而不是从 Visual Studio .NET 中运行,因此调试服务不像调试其他 Visual Studio 应用程序类型那样简单。若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。

调试 OnStart 方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。调试 Windows 服务。

安装您的服务。

  1. 可从服务控制管理器、“服务器资源管理器”或代码启动服务。

  2. 在 Visual Studio 中,从“调试”菜单中选择“进程”,出现“进程”对话框,单击“显示系统进程”。

  3. 在“可用进程”区域内单击服务的进程,然后单击“附加”。

  4. 提示   此进程将与服务的可执行文件同名,出现“附加到进程”对话框。

  5. 选择任意适当选项,然后单击“确定”关闭对话框。注意   现在已处于调试模式。

  6. 设置要在代码中使用的任意断点。

  7. 访问服务控制管理器并操纵服务,并发送停止、暂停和继续命令以命中您的断点。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式