LINUX.ORG.RU

Отладка программ на C


0

0

Читаю K&R, выполняю примеры. Столкнулся с проблемой отладки программ. Узнал про gdb, про kdbg. Но как то туго ...

Где бы взять простой инструмент (ну или подробную доку по gdb, http://www.linux.org.ru/profile/Rebel_Star/books/GNU/gdb/gdb_toc.html сеичас читаю) для отражения значения переменной во время пошагового выполнения цикла, например.

рrintf, наверное не совсем правильно.

зы. до этого программировал только на VBA - там отладка реализована на мой неискушенный взгляд просто замечательно, но я понимаю, что язык там интерпретируемый поэтому подходы другие.

А что в kdbg тугого? Он простой, как валенок... Можешь ddd попробовать - замечательнейшая (по функционалу) морда к gdb.

mv ★★★★★
()

> рrintf, наверное не совсем правильно.

Самый правильный и универсальный метод. Только прикрыть его макрой, чтобы в release выкусывать сразу весь отладочный вывод.

watashiwa_daredeska ★★★★
()

>рrintf, наверное не совсем правильно.

Почему ? Вполне, тем более иногда лучше им, только надо не забывать его прикрывать макросами, а то ручками потом все удалять не есть гутт.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

>Почему ? Вполне, тем более иногда лучше им, только надо не забывать его прикрывать макросами, а то ручками потом все удалять не есть гутт.

И потом созерцать помойку из #if #endif. Не уж, извините. Либо сразу писать всё по-нормальному, со всеми проверками и тп., либо брать в руки отладчик. Из всех IDE, которые видел в Линукс наиболее адекватно с gdb работала только Code::Blocks.

seiken ★★★★★
()
Ответ на: комментарий от seiken

#ifdef _DEBUG
#define LOG printf
#else
#define LOG 
#endif

...
LOG("var = %x\n", var);
...
LOG("other_var = %x\n", other_var);
...

где помойка из #if #endif?

anonymous
()
Ответ на: комментарий от anonymous

с параметрами налажал (#define LOG(...)), но суть ясна, полагаю

anonymous
()
Ответ на: комментарий от seiken

Неправда, gud в emacs отлично работает. Причём, сразу понимает кучу ЯП.

mv ★★★★★
()
Ответ на: комментарий от seiken

>И потом созерцать помойку из #if #endif. Не уж, извините. Либо сразу писать всё по-нормальному, со всеми проверками и тп., либо брать в руки отладчик. Из всех IDE, которые видел в Линукс наиболее адекватно с gdb работала только Code::Blocks.

5 строчек в начале файла это помойка уже ? ;)) мдааааа, вам и дебаггер не поможет ;)

alphex_kaanoken ★★★
()
Ответ на: комментарий от anonymous

>...
>LOG("var = %x\n", var);
>...
>LOG("other_var = %x\n", other_var);
>...

И что это такое, чем отличается от printf?

2alphex
>5 строчек в начале файла это помойка уже ?

Если как у анонимного собеседника, то это псевдоним для printf.

>мдааааа, вам и дебаггер не поможет ;)

Помогал, правда не люблю я это дело...

seiken ★★★★★
()
Ответ на: комментарий от seiken

Сурово. Ты таки почитай что тебе анонимус пишет. Подумай. Ну или хотя бы не лезь, когда взрослые разговаривают. :)

Teak ★★★★★
()
Ответ на: комментарий от asgard

>asgard *

>а где в k&r написано, что всё будет легко? ;)

а где написано, что я хотел без усилий научится :)

>php-coder ****

>P.S. Кстати, я тут конспектирую для себя некоторые команды gdb и ссылки на доки по нему, возможно, тебе будет интересна эта ссылка: http://www.freesource.info/wiki/devel/gdb

Спасибо.

>watashiwa_daredeska ***

>Самый правильный и универсальный метод. Только прикрыть его макрой, чтобы в release выкусывать сразу весь отладочный вывод.

>alphex_kaanoken ***

>Почему ? Вполне, тем более иногда лучше им, только надо не забывать его прикрывать макросами, а то ручками потом все удалять не есть гутт.

Осталось узнать, что за макросы и как с ними работать, а так, приятно что я на верном пути. Еще раз спасибо за ответы.

Rebel_Star
() автор топика
Ответ на: комментарий от Rebel_Star

> Осталось узнать, что за макросы

макрос привел anonymous (*) (03.05.2007 13:25:22)

> как с ними работать

Компиляешь с -D_DEBUG --- есть логи, без --- нет.

watashiwa_daredeska ★★★★
()

insight можно попробовать как морду к gdb...

imp ★★
()
Ответ на: комментарий от watashiwa_daredeska

>Компиляешь с -D_DEBUG --- есть логи, без --- нет.

Супер, спасибо.

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