如何用WINDBG调试WINDOWS服务程序

zyq5945 2009-04-20 11:22:15
如何用WINDBG调试WINDOWS服务程序,网上看了下都是attach服务进程的,我想要的是在WINDBG里启动服务进程,并查看用OutputDebugString打印的调试信.息.在VC里启动StartServiceCtrlDispatcher总是返回FALSE.
...全文
907 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq5945 2010-01-03
  • 打赏
  • 举报
回复
API:OutputDebugString+DebugView搞定了.
ray_zhang_3 2009-11-06
  • 打赏
  • 举报
回复
hqgcxyyl 2009-09-01
  • 打赏
  • 举报
回复
顶!!!!
liliangbao 2009-04-22
  • 打赏
  • 举报
回复
帮顶了!!!
zyq5945 2009-04-22
  • 打赏
  • 举报
回复
顶起~~~~~~`
zyq5945 2009-04-21
  • 打赏
  • 举报
回复
最近学习做服务,看到他们的debug文件可以很全,所以也想试下
Module Load: WinDebug/NTService.exe (symbol loading deferred)
Thread Create: Process=0, Thread=0
Module Load: C:\NT351\system32\NTDLL.DLL (symbol loading deferred)
Module Load: C:\NT351\system32\KERNEL32.DLL (symbol loading deferred)
Module Load: C:\NT351\system32\ADVAPI32.DLL (symbol loading deferred)
Module Load: C:\NT351\system32\RPCRT4.DLL (symbol loading deferred)
Thread Create: Process=0, Thread=1
*** WARNING: symbols checksum is wrong 0x0005830f 0x0005224f for C:\NT351\symbols\dll\NTDLL.DBG
Module Load: C:\NT351\symbols\dll\NTDLL.DBG (symbols loaded)
Thread Terminate: Process=0, Thread=1, Exit Code=0
Hard coded breakpoint hit
Hard coded breakpoint hit
[](130): CNTService::CNTService()
Module Load: C:\NT351\SYSTEM32\RPCLTC1.DLL (symbol loading deferred)
[NT Service Demonstration](130): Calling StartServiceCtrlDispatcher()
Thread Create: Process=0, Thread=2
[NT Service Demonstration](174): Entering CNTService::ServiceMain()
[NT Service Demonstration](174): Entering CNTService::Initialize()
[NT Service Demonstration](174): CNTService::SetStatus(3026680, 2)
[NT Service Demonstration](174): Sleeping...
[NT Service Demonstration](174): CNTService::SetStatus(3026680, 4)
[NT Service Demonstration](174): Entering CNTService::Run()
[NT Service Demonstration](174): Sleeping...
[NT Service Demonstration](174): Sleeping...
[NT Service Demonstration](174): Sleeping...
[NT Service Demonstration](130): CNTService::Handler(1)
[NT Service Demonstration](130): Entering CNTService::Stop()
[NT Service Demonstration](130): CNTService::SetStatus(3026680, 3)
[NT Service Demonstration](130): Leaving CNTService::Stop()
[NT Service Demonstration](130): Updating status (3026680, 3)
[NT Service Demonstration](174): Leaving CNTService::Run()
[NT Service Demonstration](174): Leaving CNTService::Initialize()
[NT Service Demonstration](174): Leaving CNTService::ServiceMain()
[NT Service Demonstration](174): CNTService::SetStatus(3026680, 1)
Thread Terminate: Process=0, Thread=2, Exit Code=0
[NT Service Demonstration](130): Returned from StartServiceCtrlDispatcher()
Module Unload: WinDebug/NTService.exe
Module Unload: C:\NT351\system32\NTDLL.DLL
Module Unload: C:\NT351\system32\KERNEL32.DLL
Module Unload: C:\NT351\system32\ADVAPI32.DLL
Module Unload: C:\NT351\system32\RPCRT4.DLL
Module Unload: C:\NT351\SYSTEM32\RPCLTC1.DLL
Thread Terminate: Process=0, Thread=0, Exit Code=0
Process Terminate: Process=0, Exit Code=0
>
  • 打赏
  • 举报
回复
帮顶
morris88 2009-04-21
  • 打赏
  • 举报
回复
Windbg可以用于如下三种调试:

远程调试:你可以从机器A上调试在机器B上执行的程序。具体步骤如下:? 在机器B上启动一个调试窗口(Debug Session)。你可以直接在Windbg下运行一个程序或者将Windbg附加(Attach)到一个进程。
? 在机器B的Windbg命令窗口上启动一个远程调试接口(remote):
.server npipe:pipe=PIPE_NAME
PIPE_NAME是该接口的名字。
? 在机器A上运行:
windbg –remote npipe:server=SERVER_NAME,pipe=PIPE_NAME
SERVER_NAME是机器B的名字。
Dump文件调试:如果在你的客户的机器上出现问题,你可能不能使用远程调试来解决问题。你可以要求你的用户将Windbg附加到出现问题的进程上,然后在命令窗口中输入:.dump /ma File Name
创建一个Dump文件。在得到Dump文件后,使用如下的命令来打开它:
windbg –z DUMP_FILE_NAME

本地进程调试:你可以在Windbg下直接运行一个程序:Windbg “path to executable” arguments
也可以将Windbg附加到一个正在运行的程序:
Windbg –p “process id”
Windbg –pn “process name”
注意有一种非侵入(Noninvasive)模式可以用来检查一个进程的状态并不进程的执行。当然在这种模式下无法控制被调试程序的执行。这种模式也可以用于查看一个已经在Debugger控制下运行的进程。具体命令如下:
Windbg –pv –p “process id”
Windbg –pv –pn “process name”
zyq5945 2009-04-21
  • 打赏
  • 举报
回复
顶下~~~~~~~~
zyq5945 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hairetz 的回复:]
http://blog.csdn.net/bravechou/archive/2009/02/12/3880984.aspx
调试 Windows 服务使用 WinDbg 调试器 (windbg.exe)。
[/Quote]
不是这个,我想问的是如何在windbg中看服务启动加载的过程的调试信息,不是附加进程.
zyq5945 2009-04-20
  • 打赏
  • 举报
回复
up~~~
mengde007 2009-04-20
  • 打赏
  • 举报
回复
帮顶了……
  • 打赏
  • 举报
回复
http://blog.csdn.net/bravechou/archive/2009/02/12/3880984.aspx
调试 Windows 服务使用 WinDbg 调试器 (windbg.exe)。
coverallwangp 2009-04-20
  • 打赏
  • 举报
回复
帮顶
xiaopoy 2009-04-20
  • 打赏
  • 举报
回复
dbgview
还没安装windbg,记忆中是在一个view窗口看的。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧