似乎与某些具有类似标题的问题无关。
//some other code
std::string s = Lookup->getName().str();
-> break here //some other code
注意:"Lookup"是clang::D irectoryLookup http://clang.llvm.org/doxygen/classclang_1_1DirectoryLookup.html,"Lookup->getName(("是llvm::StringRef http://llvm.org/doxygen/classllvm_1_1StringRef.html。
在上述位置中断时,在VS2017的"监视"窗格中,字符串变量"s"初始化成功,其值可以显示在"监视"窗格中。
但是当尝试显示(观看(表达式"Lookup->getName((.str(("时,它就是"s"的初始化方式,它说:
Lookup->getName().str() | Function llvm::StringRef::str has no address, possibly due to compiler optimizations.
StringRef::str(( 的源代码是:
/// str - Get the contents as an std::string.
LLVM_NODISCARD
std::string str() const {
if (!Data) return std::string();
return std::string(Data, Length);
}
并且所有库都在调试版本中。基于上述事实,似乎没有理由发生这种情况。
在调试Clang Libtooling程序期间,这种情况发生在其他情况下,这使得调试变得非常困难。
可能的原因是什么以及如何解决?
我尝试了@user15331850解决方案,但没有帮助,但是将链接器>调试>生成调试信息设置为"/DEBUG:FULL"现在似乎给了我所有变量。
这可能是由于启用了优化选项。 您可以按照以下步骤禁用相同的功能:
- 右键单击解决方案
- 点击"属性">
- 在左窗格中,单击"配置属性">
- 从子选项中单击"C/C++">
- 然后单击"优化"并从列表中选择"禁用(/Od(">
就是这样。希望它对你有用!!
我遇到了这个问题。 我需要更改以下设置:链接>调试>生成调试信息从"/DEBUG:FASTLINK"到"/DEBUG"。