如何在 MFC c++ 中跟踪或跟踪数组的元素 visual studio

How to keep track or trace the elements of array in MFC c++ visual studio

我对视觉 studios/window 应用还很陌生,所以我不习惯没有命令行。

基本上我有一个 CString m_storeEx = "12 + 2 - 4 " ,所以我使用标记化方法通过这样做将每个数字和运算符放入一个数组中:

CStringArray arr;
CString resToken= m_StoreEx.Tokenize(_T(" "),curPos);    

while (resToken != _T(""))
{
    arr.Add(resToken);
    resToken = m_StoreEx.Tokenize(_T(" "), curPos);
}

我希望最终结果是这样的数组arr = ['12', '+', '2', '-', '4']

我只是想检查一下我添加的元素是否正确。通常,如果我使用具有命令行的代码进行编码,我只会创建一个 for 循环,然后打印出数组进行检查。但我知道在 MFC visual basics 中这样做,因为没有命令行。我尝试使用调试工具检查数组的值,但它给我的只是奇怪的数字和字母。

不幸的是,Visual Studio 调试器无法显示 CStringArray 的内容,但您可以调用一些辅助跟踪函数:

...
while (resToken != _T(""))
{
    arr.Add(resToken);
    resToken = m_StoreEx.Tokenize(_T(" "), curPos);
}

afxDump.SetDepth(1);
arr.Dump(afxDump);

这将在 Visual Studio 输出 window 中显示 arr 数组的内容,如下所示:

a CStringArray at [=11=]32FB60
with 5 elements
    [0] = 12
    [1] = +
    [2] = 2
    [3] = -
    [4] = 4

如果您迫切需要此功能,可以随时在 Visual Studio 中 create a custom view

  1. 关闭Visual Studio。
  2. 从 [Visual Studio 安装文件夹]\Common7\Packages\Debugger 打开文件 autoexp.dat Notepad
  3. 将以下代码片段复制并粘贴到 autoexp.dat。具体的,粘贴到文件的第一行。

    CStringArray{
        children
        (
            #array
            (
                expr : ($e.m_pData[$i]),
                size : ($e.m_nSize)
            )
        )
    }
    

正如 l33t in , Visual Studio has provisions to extend and customize the visualization of objects in the debugger. Details are available under Create custom views of native objects 指出的那样。默认情况下,Visual Studio 不提供 CStringArray 可视化工具,因此您只能自己编写。

以下是一个简单的可视化工具,它显示集合大小及其内容:

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="CStringArray">
    <DisplayString>{{size={m_nSize}}}</DisplayString>
    <Expand>
      <ArrayItems>
        <Size>m_nSize</Size>
        <ValuePointer>m_pData</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>
</AutoVisualizer>

有多种方法可以启用此可视化工具。最简单的部署是将上面的 XML 代码复制到一个文件(例如 CStringArray.natvis)并将该文件复制到目录 %USERPROFILE%\My Documents\Visual Studio 2012\Visualizers\。其他替代方案记录在上面的 link 中。

部署后,逐步执行以下代码

CStringArray str;
str.Add( _T( "12" ) );
str.Add( _T( "+" ) );
str.Add( _T( "2" ) );
str.Add( _T( "-" ) );
str.Add( _T( "4" ) );

在调试器中生成此可视化: