我可以在 Visual Studio“当命中”断点中像 $FUNCTION(带有完整签名)一样格式化 $CALLER 吗?

Posted

技术标签:

【中文标题】我可以在 Visual Studio“当命中”断点中像 $FUNCTION(带有完整签名)一样格式化 $CALLER 吗?【英文标题】:Can I format $CALLER like $FUNCTION (with full signature) in a Visual Studio "When Hit" Breakpoint? 【发布时间】:2013-08-16 18:32:04 【问题描述】:

我一直在感兴趣的 C++ 函数上使用跟踪点在 Graphviz 中构建动态调用图。我在断点 UI 中使用的语法是

"$CALLER" -> "$FUNCTION";

不幸的是,输出并不是我所需要的,因为虽然 $FUNCTION 扩展为完整签名,但 $CALLER 没有。有没有办法以与 $FUNCTION 相同的格式获取调用者的签名?没有它,我的调用图上的节点名称不匹配。 (我可以通过在事后删除被调用者的签名来解决这个问题,但这会合并对重载函数的调用,并不理想。)

在 VS 2010 中,提供了在遇到断点时调用宏的规定。现在不再支持宏,在 VS 2012 中是否有替代品?

或者有没有更简单的方法来获取这些信息? (我有性能向导,但我不认为它具有与调试器相同的保真度,因为它使用 CPU 采样。而且 C++ 不支持 Intellitrace,所以即使我有 Ultimate 版也不会一个选项。)

谢谢。

【问题讨论】:

我认为答案介于“否”和“你为什么要这样做?”之间。显然,使用断点并不能很好地扩展,与其他方式相反,检测然后过滤可能会更好。就 Visual Studio 自动化而言,我看到他们有一个 Breakpoint 对象,但我不知道每次遇到断点时如何启动某些东西。 link 【参考方案1】:

使用 Visual Studio 收集此信息的一个好方法是在“仪器模式”下使用 Visual Studio Profiler。更多信息请参考MSDN。

您应该能够配置探查器以收集整个调用图并且支持 C++ 收集。

【讨论】:

以上是关于我可以在 Visual Studio“当命中”断点中像 $FUNCTION(带有完整签名)一样格式化 $CALLER 吗?的主要内容,如果未能解决你的问题,请参考以下文章

掌握Visual Studio断点

在 Visual Studio 中,我可以在只有调试符号的代码中放置断点吗?

Visual Studio 拒绝忘记断点?

Visual Studio 2013 Express 网页版断点窗口

在 Visual Studio 中,我可以在断点处绘制我的变量吗?

如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点