can3p (can3p) wrote,
can3p
can3p

  • 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
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments