windbg命令集合

    xiaoxiao2021-03-25  95

    调试会话

    .create :创建新的进程并调试 例子 .create notepad.exe

    .attach:附加到指定进程         例子 .attach 2568

    .restart:让调试目标重新运行 例子 .restart 或者.restart /f

    .crash:强制目标系统崩溃(内核态) 例子 .crash

    .reboot:重启目标系统(内核态) 例子 .reboot

    .detach:分离调试目标 例子 .detach

    q:终止调试 例子 q

    模块和符号

    .symfix:设置符号服务器 例子 .symfix c:\symbols

    .reload:刷新模块和符号 例子 .reload 或者.reload /f

    ld:加载符号文件 例子 ld kernel32

    .sympath:显示或者设置符号路径 例子 .sympath 或者.sympath+d:\sym\

    !sym:显示符号选项 例子 !sym noisy 或者!sym quiet

    x:显示符号  例子 x VAXPlayer!* 显示vaxplayer库中所有的符号

    ln:搜索符号 例子 ln aebc6eac(可以查找符号来对应动态库)

    lm:列模块或显示模块详情 例子 lm (可以查看对应的pdb文件)  lmf(可以查看程序运行的时候对于的dll信息)

    !lmi :模块或pdb文件详情 例子 !lmi ntdll

    !dlls:动态库信息  例子 !dlls -a

    !dh:观察PE文件头  例子 !dh 76930000 -a

    转储文件

    .dump :产生转储文件  例子 .dump /mfh c:\a.dmp

    !analyze:自动分析  例子 !analyze -v

    .writemem:将内存数据写到文件 例子 .writemen c:\dump\test.txt 07288600 L2000

    进程

    |:显示或切换进程(用户态)  例子 |* 或者|2s

    !process:显示进程 例子 !process 0 0

    !dml_proc:观察进程信息 例子 !dml_proc $$以DML方式显示进程信息

    .process:显示或切换进程(内核态) 例子 .process /i 9382a560

    .kill:杀进程  例子 .kill 8adc85f0

    !peb:观察进程信息  例子 !peb

    dt:观察数据结构 例子 dt ntdll!_PEB@$peb -r

    .tlist:列进程  例子 .tlist 列出调试器所在系统的所有进程

    线程

    ~:显示/切换线程 例子 ~*显示所有线程 ~2s切换到2号线程

    !teb:显示线程块  例子 !teb

    .thread: 显示或切换线程(内核态) 例子 .thread 80551d20 或.thread /p 8747da8

    !thread:观察线程(内核态)  例子!thread

    !wow64exts.info:运行在64bit系统的32bit线程信息 例子 !wow64exts.info

    !wow64exts.sw:32bit和64bit调试器切换 例子 !wow64exts.sw

    内存

    !address:观察内存空间 例子 !address

    !address:观察内存块属性 例子 !address 0728988a

    d:显示内存数据  例子 db e2001744

    dt:按类型显示内存数据  例子 dt _GUID 014511471

    e:编辑内存数据 例子 eb 00175487 ff

    !dd:读取物理地址  例子 !dd fffffff0

    !ed:写物理地址  例子 !ed fffffff0 8000

    !vtop:虚拟地址转换为物理地址  例子 !vtop 0 badfde064

    !pte:显示页表项  例子 !pte f6551410

    !memusage:显示物理内存使用情况 例子 !memusage

    !pool:显示内核池信息  例子 !pool e326c000

    !vad:观察进程的地址空间 例子 !vad 8a761451

    !sdbgext.hwnd:观察窗口句柄  例子 !sbdgext.hwnd 001506c1

    !heap:显示堆信息  例子 !heap  01671010  -a

    k:函数调用序列  例子 ~*kbn

    .frame :切换当前栈帧 例子 .frame 2

    dds:显示数据和符号  例子 dds 80418424

    dv:显示局部变量 例子  dt

    寄存器

    r:读写寄存器  例子  r cr3

    rdmsr:读取MSR寄存器  例子 rdmsr 19c

    上下文

    .ecxr:切换到异常上下文  例子 .ecxr

    .tss:切换到指定TSS 例子 .tss 28

    .trap:切换到陷阱栈  例子 .trap 80541471

    .effmach:切换32和64bit上下文  例子 .effmach X86

    断点

    bp:软件断点  例子  bp test!test.cpp:65

    ba:硬件断点  例子 ba w4 00006484

    bm:成批设置断点  例子 bm /a nt!Dbgk*

    bd/be/bc/dl:管理断点

    执行和跟踪

    g:恢复执行  例子 g

    p:单步执行  例子 p

    t:单步跟踪  例子 t

    wt:自动跟踪 例子 wt -l 3

    反汇编

    u:反汇编  例子 u nt!PsGetcutrentID

    uf:反汇编整个函数  例子 uf RtlLeaveCriticalSection

    ub:反向反汇编  例子 ub 14785214

    a :汇编   例子  a<地址>

    死锁

    !locks:扫描关键区(用户态)或ERESOURCE(内核态)  例子 !locks

    !cs:观察关键区  例子 !cs -l

    !alpc:观察ALPC端口  例子   !alpc /m 02145895

    处理器

    !pcr:管理处理器控制区  例子 !pcr

    dg:观察段描述符  例子 dg @fs

    !cpuid:显示CPU型号  例子 !cpuid

    !cpuinfo:显示cpu属性(内核态)  例子 !cpuinfo

    !irql:显示保存的IRQL

      

    转载请注明原文地址: https://ju.6miu.com/read-25665.html

    最新回复(0)