Я обнаружил ошибку в последней версии Xcode 7.0, которая очень раздражает нас в нашей компании, потому что она делает большую часть нашего кода C ++ не отлаживаемой. После большого эксперимента я смог воспроизвести его с минимальным количеством кода.
В некоторых случаях невозможно увидеть членов внутри класса C ++ в LLDB. Похоже, что для появления этой ошибки должно быть три условия:
virtual
методЯ спрашиваю, знает ли кто-то еще об этой ошибке и какова рекомендуемая процедура для сообщения об этой ошибке (LLVM или Apple?).
Действия по воспроизведению:
Создайте два исходных файла с их содержимым:
header.h
#ifndef HEADER_INCLUDED
#define HEADER_INCLUDED
class A; // forward declaration, has an effect on bug
class A
{
public :
virtual ~A() {}
protected:
int doYouSeeMe;
};
#endif
PCHAndFDbug.cpp
#include "header.h"
int main()
{
A* a = new A();
return 0;
}
Создайте небольшой проект Xcode 7 с этими двумя файлами. header.h
должен быть установлен как предварительно скомпилированный заголовок (Заголовок префикса настройка в Xcode). Для справки, я использую Premake для создания этого проекта, и вот premake5.lua
источник:
solution "PCHAndFDbug"configurations {"Debug"}
xcodebuildsettings { MACOSX_DEPLOYMENT_TARGET = "10.7" }
project "WithPCH"language "C++"files {"PCHAndFDbug.cpp", "header.h"}
kind "ConsoleApp"pchheader "header.h"
project "WithoutPCH"language "C++"files {"PCHAndFDbug.cpp", "header.h"}
kind "ConsoleApp"
Поместите точку останова на return 0
заявление. Проверьте, можете ли вы видеть участника doYouSeeMe
в a
переменная.
Та же проблема для меня. Исправлено отключением «Включить отладку модуля Clang» в настройках сборки
Для Apple, по крайней мере, вы должны отправить отчет об ошибке через центр разработчиков https://developer.apple.com/bug-reporting/
Я тоже сталкивался с этой ошибкой, и она раздражает.