2017-01-25 5 views
-1

Когда я отладку C++ (в clion)

Я не могу смотреть «глобальных строк» , я попытался проверить еще тип, но он работал хорошо.

вара создать не удалось создать изменяемый объект

Кроме того, я пробовал местный номер, и я тоже смотрел его ?!

this is screen shot of the program

+3

Дон Не размещайте ссылки на изображения текста. Скопируйте-вставьте фактический текст, как текст, в тело вопроса. Пожалуйста, [прочитайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), и узнайте, как создать [Минимальный, Полный и Подтверждаемый пример] (http: // stackoverflow. ком/помощь/mcve). –

+0

Что касается вашей проблемы, какую версию Clion вы используете? Я помню, что в ранних версиях в режиме отладчика были проблемы с 'std :: string', но это исправлено уже довольно давно. –

+0

non const 'char *' для строковых литералов устарели (чтобы остановить попытку изменить строковый литерал), попробуйте 'const char * f =" RBYG ";' – George

ответ

2

Только в случае, вопрос теперь отслеживаются как CPP-8693.

Основная причина связана с libstdC++ dual ABI. Глобальные символы std::string типов искалечены по-разному, что, в свою очередь, смущает GDB.

В выпуске GCC 5.1 libstdC++ представила новую библиотеку ABI, которая включает в себя новые реализации std::string и std::list. Эти изменения были необходимы для соответствия стандарту C++ 2011 года, который запрещает строки «Copy-On-Write» и требует, чтобы списки отслеживали их размер.

Учитывая следующий код:

std::string global_var = "Hi there!"; 
static std::string static_var = "Hello"; 

Вот связанные nm выхода:

0000000000602240 B _Z10global_varB5cxx11 
0000000000602280 b _ZL10static_var 

Возможного обходного пути, чтобы отключить C++ 11 ABI. В CMakeLists.txt, добавьте следующую строку сразу после set(CMAKE_CXX_STANDARD 11) линии, если таковые имеются:

add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) 

Это делает символьные имена, чтобы быть подогнаны по-разному, таким образом, GDB счастлив снова:

0000000000602238 B global_var 
0000000000602248 b _ZL10static_var 
Смежные вопросы