Windbg设置取决于调用堆栈的条件断点 [英] Windbg Set Conditional Breakpoints that depends on Call Stack
本文介绍了Windbg设置取决于调用堆栈的条件断点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题:我需要创建一个脚本或表达式,如果callstack上的某个地方是一个具有特定名称的函数,则该表达式不会断开。
The problem: I need to make a script or an expression that that doesn't break if somewhere on callstack is a function with a specific name.
具体问题:如何获取callstack上的函数到字符串列表?
Specific question: How can I get functions on callstack to a list of strings ?
示例:
Module!MyFunctionWithConditionalBreakpoint
Module!Function1
Module!Function2
Module!Function3
Module!MyFunctionWithConditionalBreakpoint
Module!Function1
Module!ClassA:MemberFunction
Module!Function3
我想要 Module!MyFunctionWithConditionalBreakpoint
仅在来自 Module!ClassA:MemberFunction
我需要这个非托管代码。管理解决方案是类似
I need this in unmanaged code. Managed solution is something like
System.Diagnostics.StackTrace()。ToString()。包含(YourMethodName)
System.Diagnostics.StackTrace().ToString().Contains("YourMethodName")
推荐答案
bp Module!MyFunctionWithConditionalBreakpoint "r $t0 = 0;.foreach (v { k }) { .if ($spat(\"v\", \"*Module!ClassA:MemberFunction*\")) { r $t0 = 1;.break } }; .if($t0 = 0) { gc }"
在伪代码中,它将是:
t0 = 0
foreach (token in k-command result) {
if (token.contains("Module!ClassA:MemberFunction")) {
t0 = 1
break
}
}
if (t0 == 0) {
// continue execution
} else {
// break into the debugger
}
这篇关于Windbg设置取决于调用堆栈的条件断点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文