如何以编程方式引用WinDbg中的断点? 编程断点ID
docs.microsoft.com声称这是关于使用ID表达式设置断点的 断点ID不必显式引用。相反,你 可以使用解析为以下整数的数值表达式: 对应于断点ID。以指示表达式应 要解释为断点,请使用以下语法 b?[表达] 在此语法中,方括号是必需的,表达式表示解析为与断点ID对应的整数的任何数值表达式 这正是我想做的。然而,它似乎对我不起作用。 他们举的一个例子 b?[@$t0] 生成语法错误。我试过其他几种方法如何以编程方式引用WinDbg中的断点? 编程断点ID,windbg,Windbg,docs.microsoft.com声称这是关于使用ID表达式设置断点的 断点ID不必显式引用。相反,你 可以使用解析为以下整数的数值表达式: 对应于断点ID。以指示表达式应 要解释为断点,请使用以下语法 b?[表达] 在此语法中,方括号是必需的,表达式表示解析为与断点ID对应的整数的任何数值表达式 这正是我想做的。然而,它似乎对我不起作用。 他们举的一个例子 b?[@$t0] 生成语法错误。我试过其他几种方法 0:000> r $t0 = 300 0:000> ? $t0 Eval
0:000> r $t0 = 300
0:000> ? $t0
Evaluate expression: 768 = 00000300
0:000> b?[@$t0]
^ Syntax error in 'b?[@$t0]'
0:000> b0
^ Syntax error in 'b0'
0:000> b
^ Syntax error in 'b'
0:000> bl?[@$t0]
^ Syntax error in 'bl?[@$t0]'
0:000> bl
0 e 77c27d89 0001 (0001) 0:**** ntdll!LdrpDoDebuggerBreak+0x2b
0:000> bl0
0 e 77c27d89 0001 (0001) 0:**** ntdll!LdrpDoDebuggerBreak+0x2b
0:000> bl300
0:000>
我真的不知道给出的例子是否可行,因为b和b0不起作用。然而,我似乎不能对其他使用硬编码值的命令使用类似的语法
我如何利用这个神话故事?特征
WinDbg 10.0.17134.12 X86什么是正则表达式替换的p,u,a,表示 bp1。。bpn | ba1。。。班布。。包子
0:000> bl
0 e 62e5f7a0 0001 (0001) xxx
1 e 62e5f7a2 0001 (0001) xxx
2 e 62e5f7a3 0001 (0001) xxx
3 e 62e5f7a5 0001 (0001) xxx
0:000> bp[8-5]
breakpoint 3 exists, redefining
breakpoint 0 redefined
0:000>
还是更好的使用场景
0:000> bp .
0:000> bl
0 e 77ac05a6 0001 (0001) 0:**** ntdll!LdrpDoDebuggerBreak+0x2c
0:000> r $t0 =0
0:000> bp[@$t0] ntdll!LdrpCompareServiceChecksum
breakpoint 0 exists, redefining
0:000> bl
0 e 77a4b931 0001 (0001) 0:**** ntdll!LdrpCompareServiceChecksum
0:000> bp[@$t0] kernel32!CreateWaitableTimerExA
breakpoint 0 exists, redefining
0:000> bl
0 e 77584202 0001 (0001) 0:**** kernel32!CreateWaitableTimerExA
0:000>
看起来您在windbg命令窗口中,而不是在脚本中。在这种情况下,您应该使用您参考的链接中所述的bu/bp命令窗口和脚本之间的区别是什么?语法是一样的,对吗?