Cri*_*scu 5 c++ debugging mixed-mode visual-studio
当我在 Visual Studio 2005 中调试 C++ 混合(托管/非托管)项目时,我经常从调试监视中获得奇怪的数据,如下所示:(
顺便说一句,变量i_processName是 a const std::string &)
替代文字 http://img175.imageshack.us/img175/3561/43419953av1.jpg
请注意,该变量实际上包含有效数据 - 如果我将其打印到标准输出,则打印的字符串就好了,感谢您的询问。较简单的数据类型(例如ints)(通常?)显示其正确值。
你也遇到过这种情况吗?
这是调试时的一个主要 PITA,所以......关于如何让手表显示正确数据的任何想法,或者是什么导致了这种情况?
看来您的调试符号不正确。
检查模块调试窗口(菜单:调试>Windows)。检查您正在调试的模块是否已“已加载符号”。列在符号状态列下。检查列出的符号文件是否是您认为应该是的文件。您可以右键单击一个模块并获取有关 VS 如何加载符号的更多信息,您也可以重新加载它们。
如果您遇到符号加载问题,可以在“工具”>“选项”>“调试”>“符号”下设置路径和其他设置。
错误的调用堆栈也会导致此类问题。确保堆栈中没有任何条目,例如“堆栈在这一点上可能不正确......”。可以?
Visual Studio 在可视化工具中混淆本机数据类型和托管数据类型也可能很奇怪,但我对此表示怀疑。屏幕截图中的弹出窗口看起来调试器知道变量是什么。