2017-10-19 63 views
0

我有一个卸载的模块,我想添加无法解析的断点,但我无法使其工作。Windbg:添加多个未解决的断点

我已经试过

  1. 使用通配符作为bm。这似乎不被支持

    bu "RPS32!*"

  2. 明确命名的方法,但每个断点获取的分配ID 0.This只设置最后添加的断点。

    bu "RPS32!RpsConvertBuffer"

    bu "RPS32!RpsConvertFile"

  3. 明确命名方法编号的。该ID似乎并不坚持。每个断点再次只是重新定义了id 0,并且只有最后添加的是实际设置的。

    bu39 "RPS32!RpsConvertBuffer"

    bu40 "RPS32!RpsConvertFile"

所以我的问题实际上是双重的:

  • 是否有可能有多个未解决的断点?
  • 如果可能,我使用的语法有什么问题?
+0

你尝试BU和ID之间的空间? 例如'bu 39“RPS32!RpsConvertBuffer”'? 你也可以使用x命令对这些函数进行查找:x/D/f RPS32!RpsConvert * – GamerJ5

+0

@ GamerJ5 - 当我尝试添加断点时,模块被卸载,因此查找不会返回任何内容。添加空格会改变语义。它在地址39处添加一个未解决的断点,并在触发时执行命令“RPS32!RpsConvertBuffer”。 –

+0

@ GamerJ5 - 看起来引用是责备:S。添加不带引号的bu断点工作得很好。 –

回答

1

我自己再次遇到这个问题的机会相当高,所以我几乎回答自己的兴趣问题。

删除周围的方法引用


这大概是WinDbg中断点语法101,但增加周围的方法行情使得WinDbg的

  • 使用当前指令的地址加一个未解决的断点
  • 重用Id 0
  • 并将引号之间的内容解释为命令。

望着断点列表,那一分钱真的应该下降更快

(1e48.1c10): Break instruction exception - code 80000003 (first chance) 
eax=00000000 ebx=00000000 ecx=08160000 edx=0012e118 esi=fffffffe edi=00000000 
eip=77220ed4 esp=0025f93c ebp=0025f968 iopl=0   nv up ei pl zr na pe nc 
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b    efl=00000246 
ntdll!LdrpDoDebuggerBreak+0x2c: 
77220ed4 cc    int  3 
0:000> bu "Unresolved1" 
0:000> bu "Unresolved2" 
breakpoint 0 redefined 
0:000> bl 
    0 e Disable Clear 77220ed4  0001 (0001) 0:**** ntdll!LdrpDoDebuggerBreak+0x2c "Unresolved2"