在Visual Studio调试中检查STL容器

时间:2020-03-06 14:27:34  来源:igfitidea点击:

如果我有一个std :: vector或者std :: map变量,并且我想查看其中的内容,那么在调试时看到第n个元素会很麻烦。有没有插件,或者有一些技巧可以使调试((VS2003 / 2005/2008))时更容易查看STL容器变量?

解决方案

对于向量,msdn论坛上的该线程具有一个代码段,用于在向量索引上设置监视,这可能会有所帮助。

至少对我来说,Visual Studio 2008在标准的鼠标悬停内容框中显示STL容器的内容。

我们可以创建一个自定义的可视化工具
检查一下:http://www.virtualdub.org/blog/pivot/entry.php?id=120

我们也可以右键点击手表中的任何值,然后选择"添加手表"。如果我们只需要查看地图或者集合的一个元素,这将很有用。

这也导致christopher_f发布了针对向量((v)._ Myfirst)[index]的解决方案

如果要同时观看多个元素,则可以这样添加一个逗号和元素数量:

(v._Myfirst)[startIndex],计数

但是,请注意,count必须是一个常数,不能是另一个表达式的结果。

在VS2005和VS 2008中,我们可以看到STL容器的内容。获取数据的规则位于autoexp.dat" c:\ Program Files \ Microsoft Visual Studio 9 \ Common7 \ Packages \ Debugger \ autoexp.dat"中。

AutoExp.dat是要自定义的。但是,STL定义位于[Visualizer]部分下。如果我们能弄清楚该部分使用的语言,则可以获取更多功能,但是我建议我们不要理会该部分。

VS2003中存在Autoexp.dat,但不支持STL容器([Visualizer]不存在)。在VS2003中,我们必须手动导航基础数据表示形式。

通过修改autoexp.dat,可以添加用于浏览我们自己类型的数据表示的规则,以便于调试。如果这样做,则应仅将其添加到[AutoExp]下。修改文件之前,请小心并备份该文件。