2013年7月12日星期五

WinDbg远程调试

注意windbg的版本要尽量相同。

第一步:在被调试的机器上,也就是服务端。
一种是命令行方式启动windbgWinDBG.exe -server tcp:port=8888 -p 2010
    注释:(使用TCP协议,在端口8888建立调试服务, 调试机器上进程号为2010的程序)
另一种是启动windbg,打开要调试的程序,然后在命令窗口输入.server tcp:port=8888来建立server,
    成功后windbg会提示你Client如何连接到Server,例如:

0:000> .server tcp:port=8888
Server started.  Client can connect with any of these command lines
0: <debugger> -remote tcp:Port=8888,Server=KOUDAQIANG-WIN8


第二步:在本地
命令行:windbg -remote tcp:Port=8888,Server=KOUDAQIANG-WIN8
或者启动后用菜单文件->Connect to remote session(CTRL+R)来连接,输入: tcp:Port=8888,Server=KOUDAQIANG-WIN8
显示的内容和运行的命令如下:

Microsoft (R) Windows Debugger Version 6.2.9200.16384 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Server started.  Client can connect with any of these command lines
0: <debugger> -remote tcp:Port=8888,Server=KOUDAQIANG-WIN8
KOUDAQIANG-WIN7\Administrator (tcp 10.121.23.3:3544) connected at Fri Jul 12 15:09:46 2013
0:000> t
eax=00000000 ebx=00000003 ecx=3ba60000 edx=00000000 esi=00000000 edi=001b0000
eip=772a04cb esp=0018fac4 ebp=0018faf0 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000244
ntdll!LdrInitShimEngineDynamic+0x2ed:
772a04cb eb07            jmp     ntdll!LdrInitShimEngineDynamic+0x2f6 (772a04d4)
0:000> p
eax=00000000 ebx=00000003 ecx=3ba60000 edx=00000000 esi=00000000 edi=001b0000
eip=772a04d4 esp=0018fac4 ebp=0018faf0 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!LdrInitShimEngineDynamic+0x2f6:
772a04d4 c745fcfeffffff  mov     dword ptr [ebp-4],0FFFFFFFEh ss:002b:0018faec=00000000

同时另一个计算机的windbg上也会显示同样的内容,并且同步.

ok!
会者不难,难者不会。

但是要源代码的符号调试,需在被调试的机器上设置符号路径,这时的符号路径大多是远程的,也就是本台的地址.

参考:
http://msdn.microsoft.com/en-us/library/windows/hardware/hh451173(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ff554390.aspx
windbg帮助文件等。

其实还有一种办法:就是在内核调试的时候,在应用层的代码中加入:DebugBreak();
不过这种办法调试的速度很慢,比vs双机调试和上面的办法要慢,
不过这个办法也有个好处可以同时调试r3和r0的代码,在这种情况下vs双机调试容易中断,我想也有解决的办法.

made by correy
made at 2013.02.05

没有评论:

发表评论