Windows服务调试技巧
2011-05-26 10:28
211 查看
关于调试windows
service, 其实这是一个老生常谈的问题了.
通常的处理办法是,
在service运行后, 在调试器中选择attach
to process.
然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试.
往往当attach到我们的service的时候, 这部分代码已经执行过了.
于是,
有人提出,
可以另写一个project来调用这个OnStart方法, 或将OnStart方法中的代码搬到另一个project中测试. 不过, 这些方法终究不是以windows服务的方式调试的,
不能够最真实的反应service运行时的执行状况(如权限问题等环境问题).
我的做法是,
在OnStart方法的最开始部分加上"Debugger.Launch()"的调用, 当service运行到此处时, 将会弹出一个选择调试器的对话框,
同时暂停在当前位置.
这样,
我们就做到了在代码中手动的启动调试器.
示例代码如下:
service, 其实这是一个老生常谈的问题了.
通常的处理办法是,
在service运行后, 在调试器中选择attach
to process.
然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试.
往往当attach到我们的service的时候, 这部分代码已经执行过了.
于是,
有人提出,
可以另写一个project来调用这个OnStart方法, 或将OnStart方法中的代码搬到另一个project中测试. 不过, 这些方法终究不是以windows服务的方式调试的,
不能够最真实的反应service运行时的执行状况(如权限问题等环境问题).
我的做法是,
在OnStart方法的最开始部分加上"Debugger.Launch()"的调用, 当service运行到此处时, 将会弹出一个选择调试器的对话框,
同时暂停在当前位置.
这样,
我们就做到了在代码中手动的启动调试器.
示例代码如下:
public partial class MyService : ServiceBase { public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { #if DEBUG Debugger.Launch(); //Launches and attaches a debugger to the process. #endif // TODO: add your initialize code here. } protected override void OnStop() { } }
相关文章推荐
- 调试Windows服务的一些技巧
- 【转】Windows服务调试技巧
- 如何:调试 Windows 服务应用程序
- 使用windows控制台调试服务的方法
- c#创建、安装、卸载、调试windows服务的简单事例
- Windows Service 使用参数安装DEMO,可使用控制台启动方式进行调试,服务安装完后立即启动
- 关于windows服务的编写/安装/与调试
- 调试windows系统服务
- .net windows 服务创建、安装、卸载和调试
- VS 2012 在 windows 8 中无法使用 Deubgger.Lunch() 对服务进行调试
- [windows服务]windows服务的调试
- Windows 服务快速调试
- 本地计算机上的XXX服务启动后又停止了——Windows Service服务调试(二)
- 调试windows服务最简单的方法之一
- windows服务程序调试方法 - 启动直接进入调试
- windows服务程序的调试
- windows 服务(可以控制台调试)
- 调试windows服务的一点经验
- windows服务开发(二、调试)
- vc windows服务程序调试