基本上我的问题是,我希望 Visual Studio (2010 Professional) 能够在我正在调试的代码中处理的监 window 口中计算任何 Visual C++ 表达式,但显然有一些东西阻止了这种情况的发生。例如,在处理 CString 时,在监 window 口中评估 CString 上的方法 IsEmpty
会给出一个 Member function not found
错误,基本相等比较(在正在调试的代码显然没有问题)。
我在这里错过了什么,还是我要求太多?明显的解决方案是在我的代码中针对我正在寻找的任何 CString 操作添加调试语句,但我宁愿不必这样做。
更新/示例:
CString blah = _T("blah");
在我的代码中调用 blah.IsEmpty()
工作正常,但在调试器的监 window 口中,我收到上述错误 (CXX0052
)。变量blah
的内容可以在监 window 口中看到。
最佳答案
我可以重现您的问题,事实上,VS 监 window 口显示未找到成员函数
以及错误代码CXX0052
。
在 the MSDN documentation我发现这个问题是由于调用内联函数而出现的,CString::IsEmpty()
成员函数可能以某种方式内联(这就是监 window 口评估器看到的),以解决问题,首先打开您的项目配置并禁用内联
其次,仍然在项目配置中,选择在静态库中使用 MFC(如果将其用作共享库,监 window 口会以某种方式将被调用的函数视为内联函数,也许这是因为在共享库中,代码是内联的,并且监 window 口评估器不使用此类运行时库的调试版本)。
第三,清理并重建您的解决方案。
之后,问题应该在调试过程中得到解决(如果您看到监视面板中的值呈灰色,请记住刷新表达式)。请记住切换回原始调试选项或更好的选项,创建一个新的调试配置文件以保留此设置。
关于visual-studio - 在 Visual Studio 调试器中查看非平凡表达式时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499410/