【问题标题】:How to keep track or trace the elements of array in MFC c++ visual studio如何在 MFC c++ Visual Studio 中跟踪或跟踪数组的元素
【发布时间】:2015-10-29 09:12:35
【问题描述】:

我对视觉工作室/窗口应用程序还很陌生,所以我不习惯没有命令行。

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

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 视觉基础中这样做,因为没有命令行。我尝试使用调试工具检查数组的值,但它只是给了我奇怪的数字和字母。

【问题讨论】:

    标签: c++ arrays visual-studio-2012 mfc trace


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 奇数。您链接到正确的 URL,描述了如何实现 Natvis 可视化,只是为了继续前进并提供一个示例,该示例使用未记录、不受支持且已被取代的 autoexp.dat 文件。原因?
      【解决方案3】:

      正如l33this/her answer 中指出的那样,Visual Studio 具有扩展和自定义调试器中对象可视化的规定。详情可在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\。上面的链接中记录了其他替代方案。

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

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

      在调试器中产生这个可视化:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 2015-03-17
        相关资源
        最近更新 更多