WinDBG调试断点命令详解

1.WinDbg下载:
  Install Debugging Tools for Windows 32-bit Version
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
  Install Debugging Tools for Windows 64-bit Versions
http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx


2. 配置WinDbg:
     运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量:
在弹出的框中输入“C:MyCodesSymbols; SRV*C:MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设置,WinDbg将先从本地文件夹C:MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。
另一种做法是从这个Symbol下载地址中http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx,下载相应操作系统所需要的完整的Symbol安装包,并进行安装,例如我将其安装在D:WINDOWSSymbols,在该框中输入“D:WINDOWSSymbols”。
(这里要注意下载的Symbols的版本一定要正确,在我的Win2003+Sp1上,我曾经以为安装Win2003+Sp2的Symbols可能会牛×点,但结果证明我错了,用WinDbg打开可执行文件时,提示“PDB symbol for mscorwks.dll not loaded;Defaulted to export symbols for ntdll.dll”的错误,
我有重新装上Win2003+Sp1的Symbols, 现在一切运行正常^_^)目录(D:DevLibSymbolLocal)不存在相应的Symbol file时,Windbg会自动从http://msdl.microsoft.com/download/symbols下载到本地目录


3.WinDBG调试断点
WinDBG调试断点命令详解:
http://blog..net/WinGeek/
http://www.programlife.net/windbg-breakpoint-command-introduction.html


测试代码:
#include "windows.h"


int main()
{
HANDLE heap_handle = HeapCreate( NULL , 0x1000 , 0x2000 ) ;


char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) ;


char *buffer1 = (char*)HeapAlloc(heap_handle , NULL , 121) ;


HeapFree(heap_handle, 0 , buffer ) ;
HeapFree(heap_handle, 0 , buffer1 ) ;


HeapDestroy( heap_handle) ;
return 0 ;
}


设置断点
bu main


详细例子
http://www.cppblog.com/ay19880703/archive/2011/10/30/159364.html
经验分享 程序员 微信小程序 职场和发展