GDB / DDD без символа & lt; var & gt; в текущем контексте

Я нашел старое решение этой проблемы, которое предлагало компилировать с -gdwarf-2, но это решение не работает или больше не работает для меня.

Таким образом, запуск DDD в скомпилированном файле, а затем двойной щелчок по переменным всегда приводит к ошибке no symbol <var> in current context

Моя программа такая:

int main()
{
for (int i = 0; i < 10; ++i)
{

}
}

команды, которые я использовал, это:

 g++ -g -O0 -gdwarf-2 test.cpp; ddd. ./a.out

Версии программ:

ddd: GNU DDD 3.3.12 (x86_64-pc-linux-gnu)
gdb: GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
gcc: gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)

Как я могу сделать эту работу?

1

Решение

Чтобы печатать / отображать переменные, они должны находиться в области видимости, поэтому для локальных переменных / параметров это означает, что вы должны находиться в точке останова в этой области.

Я могу воспроизвести ошибку, которую вы получаете, запустив DDD с вашей программой-примером и сразу же пытаясь распечатать / отобразить i,

Однажды я установил точку останова на for линии и запуска программы, я могу распечатать / отобразить их, как и ожидалось.

Я собрал с:

g++ -Wall -O0 -ggdb -o test.exe test.cpp

и побежал DDD с

ddd ./test.exe

я имею

GNU DDD 3.3.12 (x86_64-pc-linux-gnu)
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1)
1

Другие решения

Вы пытались просто удалить -gdwarf-2 из флагов компиляции? У меня была похожая проблема при использовании нового компилятора в системе со старым отладчиком. Тогда формат символов отладки по умолчанию, используемый компилятором, был слишком новым для отладчика, и мне пришлось заставить компилятор использовать старый формат. Это может быть похоже, если отладчик был недавно обновлен.

0

По вопросам рекламы [email protected]