目录
本地调试应用程序
- Open Executable...从本机选择一个程序进行调试
- Attach to a Process...将调试器挂载到本机正在运行的一个程序
远程调试应用程序
通过Ethernet建立远程连接是比较常见的一种方式。
调试正在运行的进程
- 从调试工具文件夹(例如: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\)复制dbgsrv.exe, dbgeng.dll , dbghelp.dll, DbgModel.dll到Target计算机。
- 关闭防火墙,如果是Windows PE系统: wpeutil disablefirewall。
- 在Target中启动debug stub server, 指定TCP端口。 e.g. Dbgsrv.exe -t tcp:port=4321。
- 打开Host的Windbg.exe,连接到Target。File > Connect to Remote Stub Server > dialog box。连接信息的格式: tcp:server=ServerIP,port=PortNumber. e.g. tcp:server=10.20.30.40,port=4321。
- File>Attach to a Process, 可以看到Target正在运行的进程,选择需要调试的进程作为Debugee。
从程序加载之初开始调试
- 启动debug stub server的时候带上-cs参数,它使dbgsrv创建一个新的进程并让这个新进程暂停。例如:dbgsrv -t tcp:port=4321 -cs app.exe
- 同样,通过Remote Stub Server连接Target,在进程列表中可以发现app.exe进程,选择进入调试窗口。
- 在WinDbg中执行~*m命令。这个命令恢复被dbgsrv暂停的所有线程。
- 现在可以为debuggee设置断点,并执行命令g或按F5来运行进程。
- 调试完成后,在WinDbg中执行.endpsrv命令杀死Windows PE上的dbgsrv。
从程序加载之初开始调试的另一种方法
- WinDbg Preview(从Windows Store安装)可以从WinDbg预览中启动远程进程,它将立即被挂起。
- 文件>连接到进程服务器。使用与WinDbg相同的连接字符串。
- 启动可执行(高级)。指定远程机器上的可执行文件和开始目录路径。
注意:虽然WinDbg Preview启动远程调试方便,但是它的功能不如WinDbg.exe齐全。