Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Обнаружение утечек памяти с помощью HookLogger

From Wiki
Jump to: navigation, search
Article Metadata

Пример кода
Исходный файл: Media:HookLogger.zip

Совместимость
Платформа(ы):
Symbian

Статья
Перевод:
Carbider
Последнее редактирование: hamishwillee (09 Dec 2011)

Находить утечки памяти в программном коде - это одна из наиболее затратных задач во времени разработчика. Если случается так, что Ваше приложение завершается паникой с некоторой утечкой памяти, то иногда весьма трудно найти неверный участок программы, просто анализируя её. Using HookLogger это отличный инструмент-эмулятор от Symbian, который помогает быстро найти утечку.

Contents

Как работает HookLogger?

Этот инструмент подменяет EUSER.DLL своим собственным, чтобы вести журналы распределения памяти, создания процессов и потоков, высвобождения и т.д. Приложение HookLogger собирает эти журналы и предоставляет их пользователю в простой читабельной форме.

Установка

HookLogger может быть загружен отсюда. Он снабжен удобной программой установки.

Заметка:

  • Путь установки HookLogger'а не должен содержать пробелов. А если он всё же содержит (например при установке в стандартную директорию Program Files\Common Files\Symbian\tools), Вам придётся отредактировать две строки в конце файла HookEUSER.pl. Замените
Номер Строки: 74  my $cmd = "copy $hooks_src";
вот таким кодом:
 my $cmd = "copy \"$hooks_src\"";

а строку

 Номер Строки : 77  $cmd = "$Bin/AttachDll $euser $hooks $hooked_euser";

строкой

$cmd = "\"$Bin/AttachDll\" $euser $hooks $hooked_euser";
  • Путь установки платформы S60 не должен содержать пробелов. Это не строгое требование, тем более что на все инструменты из набора Symbian всегда налагается это ограничение.

Конечно, Вы и сами можете подменить EUSER.DLL вручную.

Использование

1. Для использования HookLogger, с ним поставляется скрипт. Откройте командную строку, находясь в установочной директории HookLoggers'а и впишите:

HookEUSER winscw

После этого может появится ошибка такого рода:

C:\Program Files\Common Files\Symbian\tools>HookEUSER winscw Target path is C:\Symbian\9.1\S60_3rd_MR\epoc32/release/winscw/UDEB

       1 file(s) copied.

'C:/Program' не распознан как внешняя или внутренняя команда, исполняемая программа или пакетный файл.

Ошибка при запуске "C:/Program Files/Common Files/Symbian/tools/AttachDll euser.dll EUserParasite_eka2.dll euser.dll.HOOKED" at HookEUSER.pl line 78. На 78 строке можно установить путь к sdk, с которым вы работаете

my $path = "C:/Symbian/9.1/S60_3rd_MR/Epoc32/release/$platform/$release";

или Вы можете установить путь epocroot.

Заметка: этот Perl сценарий требует установленной переменной окружения EPOCROOT. То есть:

set EPOCROOT=S:\Symbian\9.2\S60_3rd_FP1\

2. Запустите HookLogger из меню Пуск.

3. Выберите вкладку 'Filters (фильтры)' и нажмите кнопку 'Browse for EXE (Обзор файла EXE)' и найдите Ваше приложение, в котором происходит утечка и которое Вы хотите проанализировать. В выпадающем списке выберите 'Include only checked (включать только отмеченные)'.

4. Запустите эмулятор.

5. Запустите Ваше приложение в эмуляторе, воспроизведите утечку памяти и закройте его.

6. Проверьте вкладку 'Heap (куча)' в HookLogger'е, а затем нажмите кнопку 'List all allocs (вывести список распределения памяти)'.

Вы увидите список потерянных данных. С помощью 'Alloc details (детали распределения)' Вы получите всю необходимую информацию: стек вызова, когда потерянная память была выделена.

Обратите внимание!

Не забудьте восстановить старый EUSER.DLL после использования HookLogger, так как эта библиотека работает медленно и использует много ресурсов!

HookEUSER -r winscw

Внутренние Ссылки (на английском)


Внешние Ссылки

This page was last modified on 9 December 2011, at 01:00.
204 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×