2017-01-23 2 views
0

Я использую Clion IDe, с gcc/g ++ & gdb для отладчика.ошибка чтения переменной: Не удалось найти базу кадров

В CMakeList.txt у меня установлены следующие параметры компилятора. set(CMAKE_CXX_FLAGS -std=c++11 -fopenmp -fPIC -O0 -gdwarf-2 -finline-functions)

Я могу просмотреть значения переменных в main(), но не любые другие классы. Он показывает ошибку для всех методов, вызванных из основного напрямую или вложенных:

<error reading variable: Could not find the frame base for xxxxclass::xxxMethod> Любой указатель будет полезен.

+0

Попробуйте -g вместо -gdwarf-2 –

ответ

1

Несколько проблем я вижу:

  1. Не ограничивайте себя карликовой v2 (-gdwarf-2), если ваш отладчик не может обрабатывать новые карликовые изменения.
  2. Попробуйте, насколько возможно, отключить оптимизацию (-O0 следует правильно отключить -finline-functions). Но обратите внимание, что более новые версии карликов лучше обрабатывают и отслеживают оптимизацию.
  3. Постарайтесь, насколько это возможно, сделать подробную информацию об отладке. Опция -g принимает необязательный аргумент, который по умолчанию равен 2, но максимальное значение которого может быть 3. Затем он разблокирует некоторые функции отладчика, такие как отладка макросов CPP.
  4. Включить расширения отладки GDB с помощью -ggdb.
  5. Если вы все еще жалуетесь, вам все равно придется явно использовать дополнительные gcc debugging options. Но обычно это требуется только при отладке оптимизированной программы.

Итак, попробуйте еще раз с: set(CMAKE_CXX_FLAGS -std=c++11 -fopenmp -fPIC -O0 -g3 -ggdb)

Смежные вопросы