Кажется неуместным для некоторых вопросов с похожими заголовками.
//some other code
std::string s = Lookup->getName().str();
-> break here //some other code
Примечание: «Lookup» - это clang :: DirectoryLookup http://clang.llvm.org/doxygen/classclang_1_1DirectoryLookup.html, «Lookup-> getName ()» is 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, и это делает отладку очень сложной.
Что такое возможная причина и как ее решить?