初学者 windbg的使用~~(一)

来源:互联网 发布:linux io性能分析 编辑:程序博客网 时间:2024/06/05 17:57

    windows下有很多调试工具的,但是比较强大的调试工具是 windbg 既能调试用户态又能调试 内核态。本人是初学者,也是在学习中,希望大家能一起学习。。

    一. 加载符号

    1.设置符号路径

.sympath  E:\symbols    

.symfix   c:\symbols  将符号路径修改为Microsoft公有符号库存储库, 结果是将符号路径设置为SRV* downstream folder*http://msdl.microsoft.com/dowmload/symbols

还可以在 File/Symbol file path   里面设置

2.加载符号

显示符号信息

lm l   显示已加载符号的模块

lm  vm 模块名字   显示模块版本信息等

! lmi ntdll.dll 显示ntdll.dll 模块的头部信息

.reload   是抛弃已加载的符号信息,重新加载

!sym noisy

如果.relaod 没有成功,用!sym noisy 打开.reload 的命令详细日志 在重新加载

.reload /f 模块名

检查模块是否加载成功

在 !lmi 命令下会有checksum 数值

!chksym 数值  看是不是那个模块的符号加载上了

3.使用符号

x 使用通配符 查找 x *!*singe*查找每个符号文件中包含的字符串 some的符号名

x /v /t 模块名!*  

显示所有函数和对象所占字节数按升序排列出符号的类型和大小

ln address  显示address附近的相对应的符号

4.加载源文件

.srcpath cpp路径    逐行调试代码,这样就和vs一样了,在local里面可以查看变量的值

.srcpath c:\ : d:\  可以有多个路径  查找到对应的.cpp文件

还可以在file/sorce file path 里面设置路径

.srcnoisy  查看状体

.srcnoisy 1 开始   这样会显示丰富的源码信息

.srcnoisy 0 关闭

5.判断程序停下来的原因

.lastevent  

1.由于有断点

2.内存越界

  version 命令  是打印系统版本及调试器 的版本号

r是寄存器  reax 查看eax寄存器的值

二。断点设置

bp 

查看所有断点 bl

      bp ntdll!RtlAllocateHeap    每次执行到这个函数都会停下来

bp  /p @$pro ntdll!RtAllocateHeap "lprocess -l0:g "

bu 可以设置延迟断点

dv 是显示局部变量的值


  dt 结构体   显示结构体信息

 eg: dt this 就会显示这个this里面的信息

0 0
原创粉丝点击