gpt4 book ai didi

c++ - 以堆栈状态为条件的 Visual Studio 断点

转载 作者:可可西里 更新时间:2023-11-01 15:22:38 26 4
gpt4 key购买 nike

Visual studio 可以在遇到断点时打印调用堆栈,并且可以在满足条件时停止,有什么方法可以将它们结合起来并在从另一个选定的函数调用时停止,并忽略所有其他调用?

最佳答案

我相信唯一的方法就是使用宏。右键单击您的断点,选择“When Hit..”,选择“Run a macro”,然后将其指向一个类似于以下内容的宏:

 Sub ContinueUnlessCalledFromRightContext()
For Each frame As EnvDTE.StackFrame In DTE.Debugger.CurrentThread.StackFrames
If (frame.FunctionName.Contains("SomeOtherMethodsName") Then Exit Function
Next

DTE.Debugger.Go() ` we weren't called from the right context so continue execution.
End Sub

以上是半伪代码;我实际上并没有测试它,但应该进行一些小的修改。

请注意,如果多次遇到断点,这将非常慢,因为从断点运行宏本质上非常慢。

顺便说一句,如果你问的是 .NET/C#,它会简单得多,你可以只在

上设置一个条件断点
new System.Diagnostics.StackTrace().ToString().Contains("SomeOtherMethodsName")

...并完成它。

关于c++ - 以堆栈状态为条件的 Visual Studio 断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9006213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com