日期:2014-05-19  浏览次数:20772 次

请教.net下如何调试Windows服务
RT,最好能一步步说清楚,现在有源码,不会进行进程调试,看了好多文章,都是说要附加到进程,可是之前如何注册运行服务?

------解决方案--------------------
适用于 .NET Framework 的 Visual Studio 程序员指南
如何:调试 Windows 服务应用程序

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

具体参见如下:
http://msdn2.microsoft.com/zh-cn/library/7a50syb3(VS.80).aspx
------解决方案--------------------
全文大致如下:

适用于 .NET Framework 的 Visual Studio 程序员指南
如何:调试 Windows 服务应用程序

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

警告
除非知道进程是什么,并且知道附加到进程或可能取消进程所带来的后果,否则不要附加到进程。例如,如果附加到 WinLogon 进程,然后停止调试,系统就会暂停,因为没有 WinLogon,系统无法运行。


只能将调试器附加到正在运行的服务。附加进程会中断服务的当前运行;它并不真正终止或暂停服务的处理。也就是说,如果开始调试时服务正在运行,则在进行调试时,该服务从技术上说仍处于“已启动”状态,但它的处理已挂起。

附加到服务的进程使您能够调试大多数服务代码,但并非全部;例如,由于服务已经启动,因此不能用这种方法调试服务的 OnStart 方法中的代码,或调试用于加载服务的 Main 方法中的代码。解决此问题的一个方法是:在唯一作用是帮助调试的服务应用程序中创建一个临时服务。可以将两个服务都安装上,然后启动此“虚拟”服务加载服务进程。临时服务启动了进程后,就可以使用 Visual Studio 中的“调试”菜单来附加到服务进程。

当附加该进程之后,可以设置断点并使用这些断点来调试代码。当退出用于附加到该进程的对话框时,实际上已处于调试模式。您可以使用“服务控制管理器”开始、停止、暂停和继续您的服务,因此命中已设置的断点。调试成功后,移除此“虚拟”服务。

注意
调试 OnStart 方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。有关更多信息,请参见疑难解答:调试 Windows 服务。


调试服务
安装您的服务。有关更多信息,请参见如何:安装和卸载服务。

可从“服务控制管理器”、“服务器资源管理器”或代码启动服务。有关更多信息,请参见如何:启动服务。

在 Visual Studio 中,从“调试”菜单中选择“进程”。

即会出现“进程”对话框。

单击“显示系统进程”。

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

提示
该进程将与服务的可执行文件同名。


出现“附加到进程”对话框。

选择任意适当的选项,然后单击“确定”关闭对话框。

注意
现在您处于调试模式。


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

访问“服务控制管理器”并操纵您的服务,并发送停止、暂停和继续命令以命中您的断点。有关运行“服务控制管理器”的更多信息,请参见如何:启动服务。


------解决方案--------------------
楼上正解
------解决方案--------------------
学习一下,还真没用到过
------解决方案--------------------
5 调试Windows服务
从另外的角度度看,调试Windows服务绝不同于一个普通的应用程序。调试Windows服务要求的步骤更多。服务不能象你对普通应用程序做的那样,只要简单地在开发环境下执行就可以调试了。服务必须首先被安装和启动,这一点在前面部分我们已经做到了。为了便于跟踪调试代码,一旦服务被启动,你就要用Visual Studio把运行的进程附加进来(attach)。记住,对你的Windows服务做的任何修改都要对这个服务进行卸载和重安装。

6 附加正在运行的Windows服务
为了调试程序,有些附加Windows服务的操作说明。这些操作假定你已经安装了这个Windows服务并且它正在运行。

(1)用Visual Studio装载这个项目
(2)点击“调试”菜单
(3)点击“进程”菜单
(4)确保 显示系统进程 被选
(5)在 可用进程 列表中,把进程定位于你的可执行文件名称上点击选中它
(6)点击 附加 按钮
(7)点击 确定
(8)点击 关闭
(9) 设置断点调试...

详见:
http://www.cnblogs.com/xh831213/archive/2006/02/28/339617.html