阅读:2537回复:4
WinDbg想说爱你不容易啊
HI,各位,向各位请教一下WINDBG的调试方法,我是这样操作的。
1.生成符号信息 更改Relase版的设置(2处): 一、Project Setting ->C/C++ Debug info: 选择Program Database 二、Project Setting ->Link 选中Generate debug info 重新编译 2.安装Windbg 下载安装最新的Windbg http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 3.设定环境变量 对于user32.dll等系统文件,Windbg可以自动从微软网站下载所需的符号信息.我们只需设定_NT_SYMBOL_PATH 这个环境变量告诉Winddbg.方法如下: 我的电脑>右键菜单>属性>高级选项卡>环境变量>系统变量>新建 变量名: _NT_SYMBOL_PATH 变量值:SRV*C:\websymbols* http://msdl.microsoft.com/download/symbols 解释一下: C:\websymbols用来存储系统符号.你可以指定其他的路径.Windbg会自动创建该文件夹 4.设定符号路径 新建一个文件夹,譬如C:\MyAppSymbols 将第一步中生成的Release目录下<youapp>.pdb文件拷贝到该文件夹,该pdb文件包含了调试所需的符号信息. 打开Windbg,选择File>Symbol file path>将C:\MyAppSymbols路径添加进去 5.调试程序 选择 File > Open Executable 然后选择你需要调试的Exe文件,就显示 WARNING: Whitespace at end of path element CommandLine: C:\test\Release\test.exe Symbol search path is: SRV*C:\websymbols* http://msdl.microsoft.com/download/symbols Executable search path is: ModLoad: 00400000 00405000 test.exe ModLoad: 77f80000 77ffd000 ntdll.dll ModLoad: 6bc40000 6bd3b000 C:\WINNT\system32\MFC42.DLL ModLoad: 78000000 78045000 C:\WINNT\system32\MSVCRT.dll ModLoad: 77e60000 77f33000 C:\WINNT\system32\KERNEL32.dll ModLoad: 77f40000 77f7c000 C:\WINNT\system32\GDI32.dll ModLoad: 77df0000 77e4f000 C:\WINNT\system32\USER32.dll (318.430): Break instruction exception - code 80000003 (first chance) eax=00000000 ebx=00131f04 ecx=00000009 edx=00000000 esi=7ffdf000 edi=00131f70 eip=77f813b1 esp=0012f984 ebp=0012fc98 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - ntdll!DbgBreakPoint: 77f813b1 cc int 3 然后我就用BP来设置断点用F5来执行,显示 ModLoad: 75e00000 75e1a000 C:\WINNT\system32\IMM32.DLL ModLoad: 796d0000 79732000 C:\WINNT\system32\ADVAPI32.DLL ModLoad: 786f0000 7875f000 C:\WINNT\system32\RPCRT4.DLL ModLoad: 6bc20000 6bc2d000 C:\WINNT\system32\MFC42LOC.DLL ModLoad: 71710000 71794000 C:\WINNT\system32\COMCTL32.DLL ModLoad: 6dd30000 6dd36000 C:\WINNT\system32\INDICDLL.dll ModLoad: 10000000 10055000 C:\Program Files\Tencent\RTXC\RTXOLAss.dll ModLoad: 76af0000 76b2e000 C:\WINNT\system32\comdlg32.dll ModLoad: 772a0000 77306000 C:\WINNT\system32\SHLWAPI.DLL ModLoad: 78f90000 791d6000 C:\WINNT\system32\SHELL32.DLL ModLoad: 777c0000 777de000 C:\WINNT\system32\WINSPOOL.DRV ModLoad: 79b20000 79b30000 C:\WINNT\system32\MPR.DLL ModLoad: 7cf00000 7cfef000 C:\WINNT\system32\ole32.dll ModLoad: 68e90000 68eb9000 C:\WINNT\system32\OLEPRO32.DLL ModLoad: 77990000 77a2b000 C:\WINNT\system32\OLEAUT32.dll Breakpoint 0 hit eax=00000001 ebx=00000001 ecx=0012fac0 edx=00130608 esi=00402300 edi=0012fe94 eip=004014ee esp=0012f99c ebp=0012f9a8 iopl=0 nv up ei ng nz ac pe nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000296 test!CTestDlg::OnButton1+0xe: 004014ee c3 ret 不知道这样操作有没有什么错误的, 如果是对的,那怎么看它的调试信息? 如果不对,还请各位赐教。 *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - 这上面的这个提示对调试有没有影响? 谢谢! Nike |
|
沙发#
发布于:2007-07-12 08:23
没人指点呀,高手出招啊。 呵呵
|
|
板凳#
发布于:2007-07-12 10:22
引用第0楼nike_zzyun于2007-07-09 19:47发表的 WinDbg想说爱你不容易啊 : WinDbg是用双机来调试的,这只是主机上这么做,如果用串口调试,要设定和目标机子一样的波特率,在目标机子上装上这个驱动程序,在boot.ini中加入调试状态启动信息。 重新启动目标机器前,启动WinDbg,那样WinDbg就能中断Windows的启动代码,我都是在这个时候设置第一个断点的。 |
|
地板#
发布于:2007-07-13 11:48
非常感谢readilen的回答,谢谢!
我目前只需要用WINDBG来进行单机的EXE文件的调试。 *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - 这上面的这个提示对调试有没有影响? 还请赐教。谢谢。 |
|
地下室#
发布于:2007-07-19 23:34
用Windbg怎么进行双机调试,那位大侠能给小弟指点一下,能够详细一点好吗
我研究一天还是没连接不上,我用就是串口线连接两台物理的机器。 目标机的操作系统是Windows Server 2003 主机的操作系统是Windows XP 在目标机端所做的操作是: 1)修改boot.ini,debugport设置为com1,baud设置为115200 并在设备管理器中修改com设备的属性 在主机端所做的操作是: 1)安装Windows Server 2003的Symbols,并设置为相应的Symbol Path 疑问: 还需要做什么设置吗? 对串口线有什么特殊的要求吗? |
|