【问题标题】:See original type definition in watch-window在监视窗口中查看原始类型定义
【发布时间】:2019-11-06 07:08:17
【问题描述】:

我的应用程序包含一些 CMap 对象,其中填充了一个 CString 和一个 LPCTSTR 字符串,以及一些内部对象,如下所示:

CMap<CString, LPCTSTR, Internal_ObjectDBInfo*> m_mapInternal_ObjectDBInfo;

CStringLPCTSTR 字符串与其他一些类型相同,如一些 typedef 结构中所述:

typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString; // C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\atlmfc\include\afxstr.h
typedef LPCWSTR PCTSTR, LPCTSTR;                                  // C:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h
typedef _Null_terminated_ CONST WCHAR *LPCWSTR, *PCWSTR;          // ...
typedef wchar_t WCHAR;                                            // ...

在我的观察窗口中,那些typedef 结构被跟踪到最后,这在观察窗口中显示了一个沉重的Type 列,如您在此处看到的:

Name                             Value  Type
===========================+===========+==========================================================================================================================
m_mapInternal_ObjectDBInfo | { size=0 }| CMap<ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t> > >,wchar_t const *,Internal_ObjectDBInfo *>

我希望 Visual Studio 不遵循整个 typedef 结构,以便在监视窗口中有一个更清晰的 Type 列,如下所示:

Name                             Value  Type
===========================+===========+===============================================
m_mapInternal_ObjectDBInfo | { size=0 }| CMap<CString, LPCTSTR, Internal_ObjectDBInfo*>

这可能吗?我正在使用 Microsoft Visual Studio Professional 2017 版本 15.9.13。

由于目前这似乎不可能,因此已为 Visual Studio 开发社区提出a suggestion

【问题讨论】:

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


    【解决方案1】:

    修改Type列的显示格式。

    恐怕答案是否定的,目前 VS 中没有选项或功能支持这种行为。

    Microsoft 文档中有一些关于如何在调试器中创建对象的自定义视图的主题,但它们似乎只支持更改显示值或名称,而不支持更改类型格式。

    您可以查看:Create custom views of native C++ objects in the debuggerCreate custom views of objects for managed C++。但它们对于满足您的需求没有用处。

    如果您确实想在 Watch 窗口中显示更清晰的内容,我建议您 go Help menu=>Seed feedback=>Provide a suggestion 发布它。让团队知道您的想法并在此处分享链接,感兴趣的成员将为您投票。但正如我上面提到的,目前这是不可能的,所以在这个新功能到来之前可能还有很长的路要走。

    【讨论】:

    • 我已经关注了,您可以考虑将此链接添加到您的问题中,更多会员可以轻松看到它:)
    猜你喜欢
    • 1970-01-01
    • 2022-06-23
    • 2013-12-17
    • 2011-09-30
    • 2016-09-12
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多