Chinaunix首页 | 论坛 | 博客
  • 博客访问: 349803
  • 博文数量: 112
  • 博客积分: 5245
  • 博客等级: 大校
  • 技术积分: 1120
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 09:20
个人简介

静下来,定好方向,好好干。

文章分类
文章存档

2017年(1)

2012年(1)

2011年(5)

2010年(6)

2009年(16)

2008年(59)

2007年(24)

我的朋友

分类: WINDOWS

2010-07-19 13:53:39

.create notepad.exe
g运行
lm显示模块
本地内核调试无法查看驱动打印的调试信息:!dbgprint
bp `mod!source.c:12` set breakpoint at specified source code
bu myModule!func bp set as soon as myModule is loaded
bp @@( MyClass::MyMethod ) break on methods (useful if the same method is overloaded and thus present on several addresses)
设好符号路径源码路径和断点,则会自动停止在相应位置。

Windbg下!object \device命令查看device对象。
查看所有驱动和设备名 
lm 
!object \  查看根目录 
!object \device  查看所有设备名 
dt _DEVICE_OBJECT XXXX 查看设备对象内容 
!devobj XXXX 查看设备对象内容 
!object \Driver  查看所有驱动名 
dt _DRIVER_OBJECT XXXX 查看驱动对象内容 
!drvobj XXXX 查看设备对象内容 
!devnode 显示PnpManger 创建的第一个PDO 
!devnode XXXX 显示设备对象
>dt _eprocess
>dt _kprocess
>!process
>!process 0 0
>!peb pebAddr
>dt -h
>!vm
>!poolused
>!vm 1
>!wdfkd.wdfdriverinfo echo
>!analyze -v

!locks查看锁,一般调试死锁的情况下使用
~*kb显示所有调用堆栈
kb显示当前调用堆栈
dv显示局部变量
dt显示数据结构
dd察看堆内容
!address显示某一地址上的页信息
u显示汇编代码
uf反汇编代码
.exr打印出异常的信息
.cxr切换上下文
x查找某一符号的地址
dds把某一地址对应到符号(于x的用法相反)
d系列命令主要是查看内存
r系列查看寄存器
b系列和断点有关系
u系列就是反汇编
x可以看函数的原型

重新设置符号路径:
SRV*E:\WinSymbols*\MySymbols;

本地进程调试:你可以在Windbg下直接运行一个程序:
Windbg “path to executable” arguments
也可以将Windbg附加到一个正在运行的程序:
Windbg –p “process id”
Windbg –pn “process name”
注意有一种非侵入(Noninvasive)模式可以用来检查一个进程的状态并不进程的执行。当然在这种模式下无法控制被调试程序的执行。这种模式也可以用于查看一个已经在Debugger控制下运行的进程。具体命令如下:
Windbg –pv –p “process id”
Windbg –pv –pn “process name”

tcp:server=Server,port=Socket[,password=Password][,ipversion=6] 
tcp:clicon=Server,port=Socket[,password=Password][,ipversion=6] 
server: cdb -server tcp:port=1025 -p 122
client: windbg -remote tcp:server=BOX17,port=1025
bp `mod!source.c:12` set breakpoint at specified source code
bu myModule!func bp set as soon as myModule is loaded

将Windbg附加到一个正在运行的程序:
Windbg –p “process id”
你可以要求你的用户将Windbg附加到出现问题的进程上,然后在命令窗口中输入:
.dump /ma File Name
创建一个Dump文件。在得到Dump文件后,使用如下的命令来打开它:
windbg –z DUMP_FILE_NAME
server:
1. file -> attach pid
2. .server tcp:port=12345   or   npipe:pipe=advdbg
client:
file -> remote session
tcp:server=SERNAME,port=12345 or npipe:server=SERNAME,pipe=advdbg

0:000> .server npipe:pipe=rabbit
0:000> .server tcp:port=7
0:000> .server npipe:pipe=tiger,password=hardtoguess
0:000> .servers
0:000> .endsrv 0
0:000> .clients
.server tcp:port=10456,server=ServerName

服务端192.168.0.111
dbgsrv -t tcp:port=12345
客户端
windbg -premote tcp:server=192.168.0.111,port=12345 -p 352

D:\WinDDK\7600.16385.0\Debuggers
1. 设置windbg的符号方式srv*d:\symbols*
2. 如何设置windbg的远程调试模式。
   远程调试最好的是dbgsvr模式,即符号可以位于调试机的模式
   1) 在目标机器上C:\Program Files\Debugging Tools for Windows>dbgsrv.exe -t tcp:port=1234,password=spat
   2) 在你的机器上 windbg.exe -premote tcp:server=192.168.1.102,port=1234,password=spat -p 596  //where 596 = PID of target
   3) 最后只要设置你自己的符号即可

bcdedit /debug ON
lkd> !drvobj serial
lkd> !pci 
lkd> !pci 1 1
lkd> !pci 100 1 9 0
lkd> !pcitree 
lkd> !dma
lkd> !drvobj serial
lkd> !devobj 876df6a0  
lkd> dt _DEVICE_OBJECT 8737fce8
lkd> dt _DEVICE_OBJECT DeviceExtension 8737fce8
lkd> dt _DEVICE_CONTEXT 8743d1d8
lkd> dt _DEVICE_CONTEXT -a CSRAddress 8743d1d8

lkd> !process  0 0
lkd> dt _PEB 7ffd6000 
lkd> .process 8822cd40
Implicit process is now 8822cd40
lkd> .context
User-mode page directory base is 7ee153c0
lkd> !cpuinfo
lkd> x MyModule!*Context
lkd> x MyModule!*device*
lkd> s -a 84b00970 L10 "hello"
!pte VirtualAddress 
!pte PTE 
!pte LiteralAddress 1 
!pte StartAddress EndAddress 
!vtop PFN VirtualAddress 


阅读(2469) | 评论(0) | 转发(0) |
0

上一篇:C语言运算符优先级

下一篇:上海话点滴

给主人留下些什么吧!~~