关于调试windows service, 其实这是一个老生常谈的问题了.

通常的处理办法是, 在service运行后, 在调试器中选择attach to process.

然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码已经执行过了. 于是, 有人提出, 可以另写一个project来调用这个OnStart方法, 或将OnStart方法中的代码搬到另一个project中测试. 不过, 这些方法终究不是以windows服务的方式调试的, 不能够最真实的反应service运行时的执行状况(如权限问题等环境问题).

我的做法是, 在OnStart方法的最开始部分加上"Debugger.Launch()"的调用, 当service运行到此处时, 将会弹出一个选择调试器的对话框, 同时暂停在当前位置. 这样, 我们就做到了在代码中手动的启动调试器.

示例代码如下:

1 public partial class MyService : ServiceBase
2 {
3 public MyService()
4 {
5 InitializeComponent();
6 }
7 protected override void OnStart(string[] args)
8 {
9 #if DEBUG
10 Debugger.Launch(); //Launches and attaches a debugger to the process.
11   #endif
12 // TODO: add your initialize code here.
13   }
14 protected override void OnStop()
15 {
16 }
17 }

转载于:https://www.cnblogs.com/fast-michael/archive/2011/05/26/2057949.html

【转】Windows服务调试技巧相关推荐

  1. 玩转Windows服务系列——Windows服务小技巧

    伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...

  2. Windows服务二:测试新建的服务、调试Windows服务

    一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main ...

  3. VS2010建立Windows服务项目时的一些问题

    1.调试所建立的Windows服务项目. 网上找了一些有关Windows服务调试的方法,很多大牛们建议Copy到Winform中调试,本菜鸟经过领导指点有个很好的调试方法,Mrak一下: 如何建立就不 ...

  4. Windows服务简单开发

    Windows服务简单开发 一.服务项目搭建 1. 新建一个Windows服务项目 1.1.建立一个WindowsService项目 1.2.添加一个服务后台管理类库,便于项目维护 2.定时任务服务的 ...

  5. Windows服务的创建、安装、调试

    1:新建一个WINDOWS服务项目: 2:打开自动生成的Server1的源代码,可以在其中看到OnStart与OnStop方法,代表的是服务的启动与关闭: 3:将事件日志中的写日志的方法COPY到Se ...

  6. 调试windows服务

    调试服务 在调试配置中生成你的服务. 安装你的服务. 从 "服务控制管理器"."服务器资源管理器"或代码启动服务. 使用管理凭据启动 Visual Studio ...

  7. Windows服务的快速搭建与调试(C#图解)

    目录 一.什么是Windows 服务? 二.创建Windows 服务与安装/卸载批处理. 三.调试Windows 服务. 正文 一.什么是Windows 服务? 答:Microsoft Windows ...

  8. C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)(转载)...

    系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...

  9. 使用C#调试Windows服务模板项目

    目录 介绍 特征 准备此应用程序的步骤如下 1.创建Windows服务项目 2.将项目输出类型从Windows应用程序更改为控制台应用程序 3.安装log4net包 4.配置log4net 5.添加S ...

最新文章

  1. python制作贪吃蛇游戏_用Python写贪吃蛇游戏的代码实例
  2. HTML设计显示表格
  3. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)
  4. 调用带有 out 参数的方法时检查弃元参数
  5. Java基础篇(02):特殊的String类,和相关扩展API
  6. 漫步线性代数三——高斯消元法
  7. EBS 常用 SQL
  8. 51Nod-1031 骨牌覆盖【递推】
  9. Redis设计与实现 - chapter7 压缩列表
  10. [渝粤教育] 西南科技大学 英语写作 在线考试复习资料
  11. 数据仓库常见建模方法与大数据领域建模实例综述
  12. 《理财市场情绪监测系统》代码实现【1】之行业词库
  13. 8uftp更改上传的网页内容
  14. 我是如何用一行代码表白学妹~❤520情人节送女朋友的3D樱花雨相册礼物❤~(程序员表白专属)...
  15. Python不能做游戏?一小时做出一个游戏!
  16. MacOS安装之:此Apple ID 未用于 App Store
  17. 【翻译】在Windows上直接查询SRV方式的地址
  18. mac风扇一直响_您如何找出哪个计算机风扇被响了?
  19. 数学建模学习笔记(清风)——插值算法
  20. JavaScript键盘事件及案列

热门文章

  1. Mvc NuGet 数据迁移
  2. 转:Ubuntu下下载工具安装--uget+aria2
  3. UVa11137 Ingenuous Cubrency
  4. php操作带中文的json数据
  5. springboot websocket
  6. 关于HttpUrlConnection网络请求之返回结果的中文乱码解决方法
  7. SQLServer XML操作
  8. 中南大学王斌计算机学院,中南大学 信息科学与工程学院,长沙 410083
  9. 文本怎么换成html,编辑html格式文本可改成txt格式(可以替换或更换某文本)新手...
  10. java 静态线程_Java线程类静态本机void yield()方法(带示例)