Windbg 常用命令

进程 线程

!process

<process> <flag 0-7> <image name>

process

就是任务管理器里面的进程ID16进制

!process 0 0

!process 0 0 everything.exe

!process ffffc283dd15f0c0 7

Kernel mode

.process

/i

切换进程

.process /i 0x69ac50c0

kernel

~

列举当前进程所有线程

User mode

!thread

Address

显示线程信息

!thread – 1 0

!thread 0xffffcb088f0a448

kernel

~0s

内核态:切换CPU

用户态:切换线程

~0s

~1s

Kernel modeuser mode

.thread ffffba86053d1200

一些 常见得命令补充:

!pci 100 0x3f 0 0 查看0x3f这个设备PCIE解析过的空间

.kdfiles -m System32\drivers\xx windbg 替换驱动

!reg querykey \REGISTRY\MACHINE\SYSTEM\ControlSet001\services 查注册表

打印WPP日志

.load rcdrkd

 !rcdrkd.rcdrlogdump icp_qat4.sys  打日志

 !rcdrkd.rcdrlogdump icp_qat4.sys -d   打debug日志

!stacks 2 xxx  显示xxx相关的线程. 命令需要花费比较长得时间

PF windbg查看VF configuration space用这个命令即可,其中VFBDFPF基础上加偏移nnVF的偏移位。

102: kd> !pci 0x100 6b 0 n

102: kd> !pci 0x100 6b 0 1

!verifier 3 drivername 分析内存泄漏

保存到文件

.logopen c:\2060_ok.txt

!dd [uc]2060FF600000 l 80000

!dd [uc]2060FF800000 l 200000

.logclose

如何用VS远程调试R3程序

  1,找到VS对应版本的Remote Debugger文件夹(用everthing搜索)

  2,复制对应位数的远程调试文件夹到目标机器上(目标机器为32位复制x86,反之复制x64)

  3,管理员权限打开msvsmon.exe,点开菜单栏的Tools,记下端口号,并在下方选择No Authentication-Allow any user to debug

  4,在本地VS中上方菜单栏将Local Windows Debugger改为Remote Windows Debugger

  5,点开要调试项目的属性,选择Debugging项,在Debugger to launch 中选择Remote Windows Debugger,在Remote Server Name中填上机器IP:PORT,在Remote Command中填上对应程序的exe完整路径+名字(如:c:\1\2.exe),在Working Directory中填写对应程序的exe目录(如:c:\1),在Connection中选择Remote with no authentication。如有命令行参数需求,可以在Remote Command Arguments中填上。完成后点击保存

  6,回到VS界面,点击上方绿色箭头开始调试

PS:注意关闭双边防火墙

PS2:如何远程调试dll?在对应dll的pdb在本地的情况下,用上面方式调试一个加载dll的exe,在LoadLibrary的时候F11单步步入可以进入dll的DllMain函数,在后续动态调用dll对应函数(GetProcessAddr获取的函数)时F11单步步入可以进入到dll对应的函数,并且自动加载dll的源文件。如果没有PDB要进入对应函数,可以在VS最上方菜单栏中选择打开汇编窗口,依旧可以F11单步步入。

PS3:VS调试管理员权限的程序需要自身是管理员权限启动,如果是远程调试程序需要管理员权限则远端机器上msvsmon.exe需管理员权限启动

Windbg 配置

bcdedit /debug on

bcdedit /dbgsettings net hostip:10.112.137.125 port:50010 key:1.2.3.4

bcdedit /set "{dbgsettings}" busparams 184.0.2

bcdedit -set TESTSIGNING ON

shutdown -r -t 0

!dma Adapter [Flags 7f]

!devstack xxx

!numa

!token

!cs 锁的地址 就能看到谁占用了这个锁

Qd 结束会话

!handle 120 f 打印hangle 120 的信息

!pte addr

!peb 进程环境块

!teb 线程环境块

ba r4 nt!NtGlobalFlag / ba rc 7763d879 读4字节

lm 列举已经加载的模块以及起始地址

lmv -m icp_qat4 查看详细信息 可以看到pdb加载情况

~*k 列出进程所有线程堆栈

~0k 0号线程堆栈

.locks

!idt -a

.tss 58

!dpcs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luopandeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值