Case by Case..

Wang Ting's Tech Blog
随笔 - 40, 评论 - 250, 引用 - 12

导航

关于

勿发广告,谢谢配合

每月存档

最新留言

广告

 

关于调试Windows Service的启动问题,基本可以参考下面的文章的“Configure a service to start with the WinDbg debugger attached”节:

How to debug Windows services
http://support.microsoft.com/kb/824344/en-us

但是有一类Windows Service,必须要用域用户身份运行,如VSTS中的Team Build Service,它们不能使用SYSTEM身份运行,所以就无法与桌面交互(Interactive with Desktop)。这样一来文章中提到的做法就无法达到要求,因为启动的Debugger将不会出现在桌面上。要解决这个问题,可以使用下面的方法,假设我们要在Team Build Service启动后立刻加载Debugger:

1. 用GFlags给TFSBuildService.exe设置下面的DebuggerPath:

D:\Debuggers\cdb.exe -server tcp:port=6789 -cf "c:\script.txt"

其中c:\script.txt是脚本文件,可以用类似下面的一些命令:

sxe -c ".dump /ma /u c:\\clr.dmp;g" clr
g

最后的g命令可保证服务能在超时前被启动起来,这样可以避免设置ServicesPipeTimeout 带来的重启。

2. 当服务被启动以后,运行WinDBG连接到cdb.exe建立的Debugging Server:

windbg -remote tcp:port=6789,server=localhost

3. 结束以后可以用qq命令退出

如果有什么更好的想法的话请告知,谢谢。

 

打印 | 张贴于 2006-08-11 02:18:00

留言反馈

#windbg使用小总结 编辑
要想很好的用windbg排查.net问题,首先要了解一些clr宿主的基础知识,以及IL的一些基础,还有简单的寄存器和汇编尝试,再就是有个好的思路,最后就是经验和对代码逻辑的理解。
2008-02-21 16:59:00 | [匿名用户:meilove812]
#re: Debugging Windows Service 编辑
cool!

象救命稻草一样:)
2006-08-11 13:04:00 | [匿名用户:NickLedson]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.8