can3p (can3p) wrote,
can3p
can3p

Category:
  • Music:

Боги отладки

Прославляю разработчиков отладочных утилит под linux! Уж вот кого коснулось божественное откровение!

Пишу программу, лезут баги. Язык си - он отличный и дружественный, но как и linux тщательно отбирает друзей. Не следишь за своими манерами, сразу засираешь память там, где не надо, и программа валится в кору. От логических ошибог отлично спасает дебаггер gdb, а вернее графическая морда к нему - Nemiver. Морда делает свое дело хорошо - содержимое переменных видно, программу можно прокрутить по шагам и отследить все действия. Но нетривиальные ошибки работы с памятью с ее помощью не поймешь.

Сижу, пишу программу, использую zlib. И раз - валится при сжатии памяти. Валится, и все! Дебаггер показывает, что все работает, все нормально, но валится. И быть бы моему горю безграничным, если бы не очередной релиз среды разработки Gnome/gtk+ приложений Anjuta. Читаю список изменений, обращает на себя строчка:
* Fixed lots of memory leaks (thanks valgrind)

Гугление дало ссылку на сайт - http://valgrind.org/
Принцип программы следующий: она запукскается в качестве супервизора и отслеживает все запросы программы на выделение памяти и все ее попытки эту память изменить. В случае недопустимых действий это все документируется и выводится в консоль. В моем случае valgrind указал на внешне безобидную строчку с memcpy, в которой и закралась ошибка. Исправил все за секунды, перед этим дебажил целый вечер. Обожаю этих людей!
Tags: linux, programming
Subscribe

  • Из прочитанного. Выпуск 60

    Добавлю новый тег, т.к. какое-то количество книг я добавил себе в список на прочтение после прослушивания подкастов Юзефоыич на медузе. 1) Midnight…

  • Ссылки и указатели

    Наткнулся на один осмысленный пример применения ссылок вместо указателей. TLDR: указатели могут быть пустыми, а ссылки - нет. Так что ссылка в…

  • Субботник

    Ну или не совсем. Каждый год раздражаюсь, но в этом просто решил принять как факт. Каждый сентябрь в Амстердаме - это месяц раскопок. В промышленном…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments