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

时间:2009-01-30 08:56:10

标签: c++ visual-studio visual-studio-2008 debugging

在我的本机C ++程序的Visual Studio中,我想在调试期间获得一些变量的图。大多数情况下,我通过编辑autoexp.dat来使用对象的文本表示。但是对于某些变量,最好是绘制一个图而不是文本形式的值。

到目前为止,我使用了一个函数plot(const void* address,const char* type),并从立即窗口调用它,给出变量地址&类型,并在内部将其转换为正确的类型。

但这种方法有两个缺点:

  • 首先,函数重载在从调试器调用函数时几乎不会起作用(因此我必须将类型作为第二个参数传递),并且函数调用偶尔会崩溃,尽管从代码中调用它时效果很好。
  • 其次,我没有编写用于绘图的C ++函数,而是有兴趣使用脚本语言(如autoexp.dat或VBScript)来提供C ++对象的内部数据,而无需编写任何包装器,以便我可以使用脚本将数据存储在文件中或绘制它。

一般来说,我感兴趣的是像 Matlab Ch IDE 这样的东西,我可以在程序处于调试中断时从外部绘制某些变量。

4 个答案:

答案 0 :(得分:3)

自VS 2005以来,Visual Studio已包含Visualizers,它几​​乎可以专门针对您的问题而设计。 MSDN比我能更好地解释这个概念:

  

展示台是其中的新组成部分   Visual Studio调试器用户界面。   可视化工具创建一个对话框或   其他界面显示变量   或以有意义的方式反对   适合其数据类型。对于   例如,HTML可视化器解释   一个HTML字符串并显示结果   因为它会出现在浏览器中   窗口,位图可视化解释器   一个位图结构并显示   它代表的图形,等等。一些   可视化工具也允许您进行编辑   查看数据。

请参阅here以获取有关如何编写一个教程的教程。

答案 1 :(得分:2)

您可以使用NetDebugPlotNetDebugLog在实时图表中绘制变量。

#include "NetDebugLog.h"

NetLog(myvar);
NetLog("test", myvar2);

NetDebugPlot

答案 2 :(得分:1)

正如其他人所说,我不确定你想要绘制什么。我通常理解,当有人说他想“绘制某些东西”时,他通常意味着一些带有数值的数组。 如果您的情况属实,英特尔的Array Visualizer可能会有所帮助。它可以自由下载,它集成到visual studio中,您可以通过两种方式使用它:作为独立应用程序或在调试时(“在某些断点处”),这样您就可以“在程序运行时”绘制数组值。 / p>

答案 3 :(得分:0)

您可以使用gnuplot吗?将您要绘制的数据吐出为调试打印,然后在您坐在断点处时,将其复制到外部文件并通过绘图仪运行。