Я использую Eclipse IDE для C / C ++ для работы над своими проектами.
Версия: 2019-06 (4.12.0) Идентификатор сборки: 20190614-1200
Я возможность успешно скомпилировать проекты с
g cc 9.2, а также с g cc 7.4.0 и текущей версией clang версии 11.0.0 из emscripten
, которую я использую Тест Google для моего проекта теста. Код компилируется со следующими определениями cmake:
add_definitions(" -pedantic -pedantic-errors -W ")
add_definitions(" -Wall -Wextra -Wpedantic -Werror -Wshadow -Wnon-virtual-dtor -Wunused ")
add_definitions(" -v ")
add_definitions(" -g ")
Когда я запускаю один из моих тестов, Ecipse CDT сообщает о следующей ошибке, когда я нахожу над shared_ptr, например, в режиме отладки, если у меня есть установить точку останова в начале теста: для некоторого объекта (неважно, какой), например, ниже:
shared_ptr<SomeVerySimpleObject> someVerySimpleObjectTemp = make_shared<SomeVerySimpleObject>();
я получаю следующее сообщение:
Multiple errors reported.
1) Failed to execute MI command:
-var-create - * someVerySimpleObjectTemp
Error message from debugger back end:
Cannot instantiate printer for default visualizer
2) Unable to create variable object
3) Failed to execute MI command:
-var-create - * theTestedObjectToCheck
Error message from debugger back end:
Cannot instantiate printer for default visualizer
тогда я вижу одно и то же сообщение для всех остальных shared_ptr в тесте, однако часть
"-var-create - * someVerySimpleObjectTemp"
изменяется в соответствии с рассматриваемым объектом
Меня не волнуют ошибки "Не удается создать экземпляр принтера для визуализатора по умолчанию" так как они описаны здесь, и я могу их отключить, т. е. отсюда Удаленная отладка GDB - Не удается создать экземпляр принтера для визуализатора по умолчанию
Однако я забочусь об ошибке «Невозможно создать переменный объект», я хочу понять, что вызывает ошибку «Невозможно создать переменный объект». Это очень похоже на этот пост
{ ссылка }
за исключением того, что я уже обновился до последней версии Eclipse и g cc, версия gdb 8.1.0, и это может не решение проблемы.
Теперь важно сказать, что все тесты выполняются просто отлично. Я не получаю никаких ошибок сегментации или каких-либо других сигналов, прерывающих тест, и результаты теста также являются теми, которые я ожидаю. Однако это продолжает беспокоить меня !!! Это происходит только в этом конкретном тесте. Который довольно большой. Если я создаю новый тест, чтобы в частности проверить создание этого объекта отдельно, например, только эту строку
shared_ptr<SomeVerySimpleObject> someVerySimpleObjectTemp = make_shared<SomeVerySimpleObject>();
отдельно, я вообще не получаю сообщений об ошибках
Я запустил GDB с надеюсь получить некоторую обратную трассировку или что-нибудь полезное, но проблема в том, что gdb, запущенный из командной строки, не сообщает об ошибках, так как исполняемый файл работает нормально. Мой вопрос здесь касается только части «Невозможно создать переменный объект», что вызывает эту ошибку в Eclipse CDT?
Любые идеи приветствуются.