nike_zzyun
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2011-06-15
  • 粉丝0
  • 关注0
  • 积分366分
  • 威望87点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
阅读:2412回复:4

WinDbg想说爱你不容易啊

楼主#
更多 发布于:2007-07-09 19:47
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
 
nike_zzyun
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2011-06-15
  • 粉丝0
  • 关注0
  • 积分366分
  • 威望87点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-12 08:23
没人指点呀,高手出招啊。 呵呵
readilen
驱动牛犊
驱动牛犊
  • 注册日期2007-03-16
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分637分
  • 威望78点
  • 贡献值0点
  • 好评度63点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-12 10:22
引用第0楼nike_zzyun于2007-07-09 19:47发表的 WinDbg想说爱你不容易啊 :
HI,各位,向各位请教一下WINDBG的调试方法,我是这样操作的。

1.生成符号信息
更改Relase版的设置(2处):
一、Project Setting ->C/C++
.......


WinDbg是用双机来调试的,这只是主机上这么做,如果用串口调试,要设定和目标机子一样的波特率,在目标机子上装上这个驱动程序,在boot.ini中加入调试状态启动信息。

重新启动目标机器前,启动WinDbg,那样WinDbg就能中断Windows的启动代码,我都是在这个时候设置第一个断点的。
nike_zzyun
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2011-06-15
  • 粉丝0
  • 关注0
  • 积分366分
  • 威望87点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-13 11:48
非常感谢readilen的回答,谢谢!
我目前只需要用WINDBG来进行单机的EXE文件的调试。
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
这上面的这个提示对调试有没有影响?
还请赐教。谢谢。
xiaobaihuang
驱动牛犊
驱动牛犊
  • 注册日期2006-10-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望18点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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
疑问:
还需要做什么设置吗?
对串口线有什么特殊的要求吗?
游客

返回顶部