找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3131|回复: 1

《windows高级调试》学习笔记

[复制链接]
发表于 2014-6-27 14:40:33 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
    软件人员通常都知道许多高效的编码方法,例如极限编程、代码自动生成框架等,但他们很少知道一些高效的调试方法,有些软件开发人员经常加班和熬夜,往往是因为他们使用了一些抵消的方法调试复杂问题。
用户态调试器:cdb ntsd windbg    内核态调试器:kd windbg
标准命令  元命令(.)  扩展命令(!)
tlist 以任务树形式列出所有进程
以非入侵方式调试Dnscache服务cdb -pv -psn Dnscache
调试转储文件windbg -z *.dmp
本地模式启动内核态调试器windbg -kl
输入输出重定向到内核态调试器ntsd -d ?
用户态提示符跳转到内核态提示符.breakin
延时.sleep<time>
查看已加载模块lm
查看调试目录信息!lmi ntdll.dll
查看指定模块头地址出的映像信息!dh
.reload重新加载符号        强制加载符号.reload rpcrt4.dll=78000000,86000
.reload命令失败时查看日志  .sym noisy
验证符号!chksym 01001b90
查看符号x [options] module!symbols => x *!*  x kernel32!g_*
列出地址处匹配符号ln 01001b90
显示导致调试器停止的最近调试事件.lastevent
显示寄存器值r              rzf rof     修改reax=1
伪寄存器:$ip(等同于.)   $ra返回地址  $retreg返回值寄存器  $csp栈指针   $proc当前进程   
          $thread当前线程    $tpid    $tid  $t0~$t19
            $ip   $retreg  $csp
  x86      eip     eax     esp
  x64      rip     rax     rsp
  Itanium  iip     ret0    bsp

   r$retreg    r$proc   r$peb  r$thread  r$teb

反汇编u        注意空格和点位置
   当前$ip uf.       $ip之前8条指令 ub .    $ip之后2条指令 u . L2   $ip之前2条指令 ub . L2  
   $ip和$ip+10之间的指令 u . .+a


回复

使用道具 举报

 楼主| 发表于 2014-6-27 15:51:42 | 显示全部楼层
栈回溯       k           k <栈基址针> <栈顶指针> <指令指针>
反汇编当前$ip所在整个函数  uf .
显示调用栈中的参数 kb <num>
显示调用栈使用的栈大小 kf <num>      
转储内存 dc        
下断点bp      
   ~0 bp test!BGTest::Fibonacci_stdcall "resp"  只在线程0上设置断点,触发后执行resp
列出所有断点bl
清除所有断点bc
符号断点bm  bm test!*kbtest*  bm *!*
延迟断点可以在未加载的模块上下断  bu ole32!CoInitializeEx
查看变量值 dv  /i显示存储位置   dv *!*

----------p50----------
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-22 16:35 , Processed in 0.037944 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表