我的应用程序包含一些CMap对象(填充有CStringLPCTSTR字符串)以及一些内部对象,例如:

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

最佳答案

Type列中修改显示格式。

恐怕答案是否定的,因为VS现在没有选项或功能支持此行为。

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

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

而且,如果您确实希望在“监视”窗口中获得更清晰的信息,建议您go Help menu => Seed feedback => Provide a suggestion进行发布。让团队知道您的想法并在此处共享链接,对此感兴趣的成员将投票给您。但是,正如我上面提到的,目前尚不可能,因此在此新功能出现之前可能还有很长的路要走。

10-08 09:04