WinDbg基础

https://wenku.baidu.com/view/4e58744dcf84b9d528ea7a42.html?sxts=1533793949189(参考)

1.  windbg根据CPU架构分为不同的版本:

x86

AMD64

IA64

2.可以调试什么

1)APP 2)driver 3) 分析dump

3.windbg vs vc debug

win 调试粒度更小,使用符号文件更多。可以调试驱动。都支持remote debug

都使用dbhelp.dll+dbgeng.dll内核,IDE不同,VC没有把核心所有功能都开放出来。

让vc 获得同样的符号加载功能symsrv.dll拷贝到VC的IDE下

4.用windbg保存dump

F6 attach app后.dump /ma c:\dump\xxx.dmp

detach 否则app会关闭。

dump随时可以产生,只要你会windbg

!analyze -v自动分析 (minidump是没有分析意义的)

-lm看所有thread

~*kb显示所有线程的callstack

调试,分析就是找联系,symbol code 都是联系的桥梁,如果没有pdb怎么办?那image(目标dll exe)就是你主要的桥梁。IDA将是你手中的另一个利器。

5.主动调试应用程序(即attach)

6.被动调试

windbg自动工具Global Flags (StartMenu -> Global Flags)image file debugger (D:\Tools\Windbg.exe)

c:\>sc config kis type=own type=interact

启动kisservice.exe windbg就出来了。

请快速让进程走过RegisterServiceCtrlHandlerEx()否则timeout,进程和windbg都结束,不再有调试机会。

7.被动vs主动

MessageBox vs __asm int 3 ()

windbg.exe -l 为把windbg装上,一崩溃就有windbg调试。

8.命令篇

.exr 显示异常记录

!handle  显示一个handle信息

.thread   切换cur thread

!locks     检查有无死锁

u 反汇编

d db dd 显示指定地址的内存

bp bc bd 下断点 清断点 禁断点

ba 下内存断点

内核调试

用虚拟机VMWARE

windbg.exe

-k com1 pipe,port \\.\pipe\com1 

boot menu中:

winxp_sp2[启用调试程序]

联机内核调试是NT自带的一个功能,使用softice可以单机内核调试,但是缺点太多,不再流行。

双机连接流程,调试驱动就像调试APP一样。

双机联调其他方式:

1394卡需要HOST TARGET机都有1394卡虚拟机不模拟

USB XP很麻烦,需要特殊的cable,好像用VMWare可以调试VISTA系统。

实战

update.exe kavstart.exe kwatch.exe 现象是UPDATE.EXE卡死,实际kwatch.exe问题。

二次开发

驱动开发注意问题

WHQL测试

猜你喜欢

转载自blog.csdn.net/johns78m/article/details/81537748