LINUX.ORG.RU

проблема с отладкой в gdb


0

0

Здравствуйте!
Спасибо всем кто обратил внимание на мою проблему. Я занимаюсь математическим сопровождением ИТ-проектов и в данный момент озабочен применением вейвлетов в обработке изображений. Не очень силён в программировании, так что не обессудьте!

Суть проблемы. Вот фрагмент кода:

class wavelet
{
double h_p[2];
double h_f[2];
int j;
int n;

vector <f> ff;
vector <f> ff_details;
vector <double> d;
public:
wavelet();
...
};

wavelet::wavelet()
{
...

int nt=8;
cout<<"nt = "<<nt<<endl;// breakpoint

for ( int i=1;i<j+1;i++,nt/=2)
{
if (nt%2)
{
ff[i].resize(++nt);
ff[i][nt-1]=0.;
ff_details[i].resize(++nt);
}
else
{
ff[i].resize(nt);
ff_details[i].resize(nt);
}
}
...
}
...

int main()
{
...
wavelet w;
...
return 0;
}

Запускаю команды
$ g++ -g programma.cpp
$ gdb ./a.out
Ставлю точку останова на строке с выводом cout командой break [номер строки], затем совершаю пошаговое выполнение программы командой next, и при каждом шаге пытаюсь вывести значение переменной nt командой print nt. Каждый раз выводится:
"No symbol "nt" in current context"
Что самое интересное строка
cout<<"nt = "<<nt<<endl;// breakpoint
работает, т.е. значение nt без проблем выводится на консоль.
Спасибо заранее.
Артут.


Re: проблема с отладкой в gdb

По умолчанию -O2 используется и переменная может быть оптимизирована. Может попробовать -g -O0 вместо -g указать параметрами компилятора.

welkam ★★ ()

Re: проблема с отладкой в gdb

Мне помогла опция -gstabs вместо -ggdb - там баг не проявляется.

Legioner ★★★★★ ()

Re: проблема с отладкой в gdb

Если сильно надо увидеть nt в gdb, попробуй сделать nt внешней перемнной (это сделает программу не thread-safe).

tailgunner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.