一、附加法调试已经启动的进程
1、通过任务管理器或tlist.exe(WinDBG中的一个命令行工具:C:\Program Files\Debugging Tools for Windows
)命令查看调试进程的PID;
2、启动调试器附加进程,方法:
1)运行命令行,进入WinDbg调试器目录,运行:WinDBG -p ProcessID /g 附加到进程PID
2)运行命令行,进入WinDbg调试器目录,运行:WinDBG -pn ImageName /g 附加到进程名
3)运行命令行,进入WinDbg调试器目录,运行:WinDBG /g 启动调试器,然后在文件菜单中选择附加到进程,选择要调试的进程名。

二、在服务启动时用WinDBG附加
1、设置要调试的服务进程名,方法:
1)使用WinDBG的全局标志设置命令gflags.exe设置,在对话框中的Image File设置要调试的服务名称,Debugger选择设置调试器的路径;
2)使用注册表编辑器,打开注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options ,添加一个主键,名称为要调试的服务名称,如 MyService.exe,在该主键下再新建一个字符串值,名称为“Debugger”,值为调试器路径;

2、设置要调试的服务与桌面交互,方法:
1)打开“管理工具”,选择“服务”,打开服务管理窗口,选择准备调试的服务名,右击选择“属性”,选择“登录”,勾选“允许服务与桌面交互”;
2)使用注册表编辑器,打开注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \ServiceName(要调试的服务名),选择“Type”,修改其值为:原值 OR 0x00000100(如原值为:0x00000010 OR 0x00000100 =0x00000110);

3、设置服务启动超时时间(系统默认为30秒),启动注册表编辑器,打开注册表路径:HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control,新建DWORD值“ServicesPipeTimeout”,其值为欲设置的超时时间,如设置 24小时,则值为86400000毫秒;
4、启动服务准备调试,打开“管理工具”,选择“服务”,打开服务管理窗口,选择准备调试的服务名,右击选择“启动”