Автор Гілка: Чим шукати сміття?  (Прочитано 1430 раз)

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Чим шукати сміття?
« : 2008-12-28 18:31:00 »
Привіт усім. У мене питання: чим шукати втрачені блоки пам'яті в програмі? Програма написана на Qt4. Візуально проглянув уесь код, а він чималенький, і не бачу де я допустив помилки. При запущеній програмі  під час роботи в ній дивлюсь на використання нею пам'яті  і бачу що видіялються нові блоки і не звільняються. Знайшов в лінуксі утиліту mtrace, прочитав доки  для роботи із нею, але вона викидає повідомлення типу:
- 0x08095158 Realloc 27450 was never alloc'd 0xb740a954
- 0x08095198 Free 386184 was never alloc'd 0xb7354ad1
- 0x08095180 Free 386185 was never alloc'd 0xb7354ad1
...

Memory not freed:
-----------------
   Address     Size     Caller
0x080955e8     0x38  at 0xb7356d67
0x08095628     0x5c  at 0xb7356d67
0x08095688     0x5c  at 0xb7356d67
0x080956e8      0x8  at 0xb7356d67
0x080956f8     0x60  at 0xb7356d67
0x08095760     0x5c  at 0xb7356d67
0x080957c0     0x50  at 0xb7356d67
0x0809d788     0x34  at 0xb7356d67
0x0809d880     0x10  at 0xb76d26c3
0x0809d8b0     0x44  at 0xb76c27f0
0x0809dde0     0x10  at 0xb76d26c3
0x0809ddf8     0x10  at 0xb76d26c3
...
з яких не ясно де в прграмі  я забув звільнити пам'ять, бо тут лише адреси в пам'яті , а не в файлі. А мало виводити  файл із номером стрічки в ньому де не звільняється пам'ять. Як так зрозумів mtrace працює лише із С.
Чи потрібні Україні програмісти, які не знають англійської мови?

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Чим шукати сміття?
« Відповідей #1 : 2008-12-28 20:53:29 »
Спробуйте скористатися KCachegrind. Якщо ви жорсткий противник літер «К» у назвах програм, то це просто оболонка до інструментів профілювання (Callgrind, Valgrind тощо). ;)
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній topknot

  • Новачок
  • *
  • дописів: 7
  • Карма: +0/-0
  • I Love YaBB 2!
Re: Чим шукати сміття?
« Відповідей #2 : 2009-01-30 01:42:36 »
бо тут лише адреси в пам'яті , а не в файлі. А мало виводити  файл із номером стрічки в ньому де не звільняється пам'ять. Як так зрозумів mtrace працює лише із С.
Можливо ти завтикав додати відлагоджувальну інфу? перевір чи вказаний параметр -g для компілятора. Якщо ні - вкажи і перекомпілюй. Також бажано перезібрати бібліотеки, з якими лінкується прога (Qt4) із інфою для відлагодження. Якщо спробуєш юзати valgrind, то для нього це теж важливо.

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Re: Чим шукати сміття?
« Відповідей #3 : 2009-02-01 00:17:11 »
Дякую за поради. Проблему вирішив. Після пошуку мусора valgrind показав, що більшість мусору створює сама Qt, я клристуюсь openSUSE 11.0 а він містить Qt 4.4.0 - воно якась взагалі глючне, Асистент інколи згортається в трей при запуску і т.і. Після переходу на 4.4.3 і 4.5.0 проблему було знято.  
Чи потрібні Україні програмісти, які не знають англійської мови?