您的位置:首页 > 其它

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运行到此处时, 将会弹出一个选择调试器的对话框,
同时暂停在当前位置.
这样,
我们就做到了在代码中手动的启动调试器.
示例代码如下:
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()
{
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: