var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2008年12月09日

    ba

    分类:

    WinDbgbpbubm这三条命令用来设置软件断点。

     

    WinDbgba这条命令用来设置硬件断点。硬件断点是通过CPU的硬件寄存器设置的断点,它仅有4个,但可实现软件断点不具有的功能,比如监视数据访问和I/O访问等。比如kernel32!HeapFree经常内存位置变化比改变数据类型的函数频率低,我们感兴趣的是一特定块被删除,这样截获所有的调用就不实际了,仅当被传递进API的参数匹配上我们在乎的地址时触发断点。不过,该块能被作为一块缓冲结果的溢出改变而不是在函数执行期。

     

    格式:

    用户态

    [~Thread] ba[ID] Access Size [Options] [Address [Passes]] ["CommandString"]

     

    核心态

    ba[ID] Access Size [Options] [Address [Passes]] ["CommandString"]

     

    ba命令不能在一个用户态进程内设置初始化断点,即main上的断点或它引用的一个在任何地方的断点当它首次命中。使用这个命令似乎需要在对应平台安装匹配的WinDbg,即WinDbg x86 on x86 windowsWinDbg x64 on amd64/ia64 windows,同样适用命令!peb!teb等。

     

    Advanced Windows DebuggingListing 2.37实际执行为:先在WinDbg中打开02sample.exe或者先运行02sample.exeattach上也行,然后输入如下命令:

    0:000> g

    ModLoad: 00000000`77d40000 00000000`77eb3000   NOT_AN_IMAGE

    ModLoad: 00000000`7d4c0000 00000000`7d5f0000   NOT_AN_IMAGE

    ModLoad: 00000000`7d600000 00000000`7d6f0000   C:\WINDOWS\SysWOW64\ntdll32.dll

    ModLoad: 00000000`77d40000 00000000`77eb3000   NOT_AN_IMAGE

    ModLoad: 00000000`77c20000 00000000`77d2c000   NOT_AN_IMAGE

    ModLoad: 00000000`7d4c0000 00000000`7d5f0000   C:\WINDOWS\syswow64\kernel32.dll

    ModLoad: 00000000`77ba0000 00000000`77bfa000   C:\WINDOWS\syswow64\msvcrt.dll

    (984.988): WOW64 breakpoint - code 4000001f (first chance)

    First chance exceptions are reported before any exception handling.

    This exception may be expected and handled.

    ntdll32!DbgBreakPoint:

    00000000`7d61002d cc              int     3

    0:000:x86> dt gGlobal

    02sample!gGlobal

       +0x000 m_ref            : 1

    0:000:x86> ba w4 gGlobal

    0:000:x86> bl

     0 e x86 00000000`010030bc w 4 0001 (0001)  0:**** 02sample!gGlobal

    0:000:x86> g   *在控制台程序里输入x

    Breakpoint 0 hit

    02sample!`dynamic atexit destructor for 'gGlobal''+0x7:

    00000000`010027b4 c3              ret

    0:000:x86> ub . l1

    02sample!`dynamic atexit destructor for 'gGlobal'':

    00000000`010027ad 8325bc30000100  and     dword ptr [02sample!gGlobal (010030bc)],0

    分享到:

    历史上的今天:

    HP 移动性能测试工具 2011年12月09日