请参阅监视窗口中的原始类型定义

时间:2019-06-24 13:02:29

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

我的应用程序包含一些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

1 个答案:

答案 0 :(得分:1)

要修改result="\n".join([e+"="+D[e] for e in D]) fw=open('requirement.txt ', 'a') fw.write(result) fw.close() 列中的显示格式。

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

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

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

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