Вступ до використання Valgrind. Пошук витоків пам'яті

Valgrind — потужний набір знадобів для зневадження роботи з оперативною пам'яттю, пошуку витоків пам'яті та профілювання.

Містить наступні модулі:
• memcheck: основний модуль, застосовується для пошуку витоків пам'яті та інших помилок пов'язаних з неправильною роботою з областями пам'яті — читанням і записом за межі виділених областей і т.д.
• cachegrind: аналізує виконання коду, збираючи дані про (не)потрапляннях до кешу і точках переходу (коли процесор не правильно передбачує розгалуження).
• callgrind: аналізує виклики функцій, використовуючи приблизно ту ж методику, що й модуль cachegrind. Дозволяє побудувати дерево викликів функцій, і відповідно, проаналізувати вузькі місця у роботі програми.
• massif: аналізує виділення пам'яті різними частинами програми
• helgrind: аналізує виконавчий код на наявність різноманітних помилок синхронізації при використанні багатопотокового коду, використовуючи POSIX Threads.

Найчастіши використовується для пошуку витоків пам'яті. Для цього призначений модуль memcheck, який уміє шукати:
• touching memory you shouldn’t (eg. overrunning heap block boundaries);
• використання змінних до їхньої ініціалізації;
• некоректне звільнення пам'яті;
• витоки пам'яті.



( Читати далі )
  • +2
  • 13 серпня 2009, 18:34
  • sashko
  • 19

Зневадження коду за допомогою strace Повідомлення-посилання

Ви коли небуть ломали собі голову над пошуком помилки? Помилки, яку ніяк не вдається знайти у джерельних текстах, але яка часто проявляється після компіляції і запуску програми. Знайомтесь: strace. strace — це утиліта, яка дозволяє вам трасувати системні виклики і сигнали конкретної команди. Якої команди? А які у вас є?

Усе, що ви хотіли знати про комп'ютерні ігри в Linux (англ.) Повідомлення-посилання

Ця стаття навчить вас кількох основних, і досить простих способів одержання різних комп'ютерних ігор для Linux. Усе законно.

25 найнебезпечніших програмістських помилок Повідомлення-посилання

Інститут SANS (SysAdmin, Audit, Network, Security) співпрацюючи з організацією MITRE опублікував перелік 25 найнебезпечніших помилок, які призводять до виникнення серйозних вразливостей у програмному забезпеченні. Помилки відбирались з урахуванням їх розповсюдженості, складності знаходження і простоти використання для здійснення шкідливих дій.

Моя уніфікована теорія вад

Пропоную вам переклад статті одного з інженерів Google, який спеціалізується на автоматизації тестування програмного забезпечення.

Я гадаю, що вади можна поділити на три основні категорії.

* Логічні. Логічні вади є основними, і найчастішими. Це ваші if'и, цикли та інша логіка в коді. Вони на сьогоднішній день є найбільш поширеним видом помилок у програмному забезпеченні. (Думка: це є неправильно).
* Вади взаємодії. Вади взаємодії — це коли два різних об'єкти не правильно взаємодіють один з одним. Наприклад, вивід імені у полі «прізвище». Також яскравим прикладом є ситуація, коли один об'єкт дає на вихід не те, чого від нього очікує інший.
* Вади відображення. Вади відображення — це коли вивід (зазвичай, якийсь ГК або репорт) відображається некоректно. Ключовий момент — у тому, що правильність і неправильність відображення визначає людина. (Думка: вигладає неправильно).

ЗАУВАЖЕННЯ: Деякі розробки гадають, що з часів, як вони почали використовувати графічний користувацький інтерфейс, усі вади стали вадами відображення! Під вадами відображення розуміються помилки, на кшталт, виходу тексту на кнопці за її межі. Якщо ж ви натискаєте на кнопку, і відбувається щось неправильне — це швидше за все, вада взаємодії або ж логічна вада. Вади відображення є досить рідкими.


( Читати далі )

Я — Linux девелопер, і приймаю замовлення на статті

Привіт! Мене звуть Сашко, я молодий лінукс девелопер, який живе у цій системі ледь не з часів свого першого «Hello, world!».

Я дуже молодий, і на правду не можу похвалитись дійсно великим досвідом і унікальними знаннями, але, на жаль, судячи з усього, альтернатив у вас не багато. Тому я пропоную вам писати статті та невеличкі ЯКЦЕ про розробку програмного забезпечення для UNIX-подібних операційних систем, на теми, які вас цікавлять, якщо, звісно ж, я у них розбираюсь.

Я використовую Linux та FreeBSD. Пишу на С, С++, Python та Perl. Маю досвід використання GTK+, GTKmm, Qt та Motif.

Прошу писати усе в коментарі, і сподіваюсь, ви мене не замінусуєте, бо я й справді хочу посприяти розвиткові спільноти. Дякую!
  • +6
  • 12 серпня 2009, 20:02
  • sashko
  • 16