Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2014, 13:18   #1
MainUnit.pas
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
Вопрос Отслеживание утечек памяти в Delphi XE4

Есть несколько хороших (бесплатных) профилировщиков для Delphi:
1. SpiderProfiler (http://dbg-spider.net)
2. SamplingProfiler (http://www.delphitools.info/samplingprofiler/)
3. gpprofiler (http://code.google.com/p/gpprofile2011/wiki/GpProfile)

Все они поддерживают Delphi XE4. Но... они не отображают исходный код профилируемой программы! Не получается увидеть место в коде, содержащее утечку!

Пруф:
http://imageshack.com/a/img842/5258/hay6.png http://imageshack.com/a/img132/1536/7ep1.png http://imageshack.com/a/img850/4984/ssqv.png
MainUnit.pas вне форума Ответить с цитированием
Старый 06.01.2014, 13:22   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Дело в том, что код вызвали когда-то, а утечка может произойти не сразу. Большинство профилировщиков вообще подсчитывает память только при завершении ПО.
И в очень большом кол-ве случаев, код на который указывает ПО не верен и искать проблему надо в другом месте.


Попробуйте MadExcept, там есть отслеживание утечек памяти.
Человек_Борща вне форума Ответить с цитированием
Старый 06.01.2014, 13:29   #3
MainUnit.pas
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию

Человек_Борща, спасибо за ответ!
MadExcept и Eurekalog - классные.
Хотелось бы ещё статистику по коду. Какая часть выполняется дольше всего и что нужно оптимизировать. Как Вы считаете, как лучше поступить?
MainUnit.pas вне форума Ответить с цитированием
Старый 06.01.2014, 13:43   #4
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

dbg-spider_v1.0.10 скачал так какой-то библиотеки не хватает.......

Точнее вот ошибка

"Точка входа в процедуру QueryProcessCycletime не найдена в библиотеке DLL kernel32.dll."
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 06.01.2014 в 13:45.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 13:45   #5
MainUnit.pas
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию

Fahman, спасибо за ответ! Жаль, что не работает
MainUnit.pas вне форума Ответить с цитированием
Старый 06.01.2014, 13:50   #6
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от MainUnit.pas Посмотреть сообщение
Fahman, спасибо за ответ! Жаль, что не работает
Ага жаль) я тоже нифига не пойму что это но скачал) в хозяйстве думаю пригодится
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 14:31   #7
MainUnit.pas
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию

Цитата:
я тоже нифига не пойму что это
Программа, которая ищет утечки памяти.
MainUnit.pas вне форума Ответить с цитированием
Старый 06.01.2014, 17:17   #8
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от MainUnit.pas Посмотреть сообщение
Программа, которая ищет утечки памяти.
Да) теперь понял не много Вики помог)
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 23.03.2014, 10:38   #9
yavfast
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Fahman Посмотреть сообщение
dbg-spider_v1.0.10 скачал так какой-то библиотеки не хватает.......

Точнее вот ошибка

"Точка входа в процедуру QueryProcessCycletime не найдена в библиотеке DLL kernel32.dll."
Я разработчик этой программы...
Она работает только на Windows 7 (возможно, на Vista). Тестируется на XE4, раньше работала на D2010 и XE2.
Профилировщик делаю для собственных производственных нужд, раздаю всем желающим бесплатно. Новые версии выходят регулярно каждый месяц.
Если есть вопросы или предложения, то можно задавать здесь или на мыло.
yavfast вне форума Ответить с цитированием
Старый 18.08.2014, 13:39   #10
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Здравствуйте. Не стал плодить новые темы, так что напишу тут.
Есть некая программа, нужная только мне для включения отключения звука в винде. Каждую секунду, если смотреть через диспетчер задач, в памяти наращивается на 4КБ. Не могу найти утечку памяти. Гляньте плиз на код, может кто что посоветует.
Код:
program VolumeService;

uses
  MMSystem, Registry, Windows;

{$R *.res}

function SetWaveVolume(const AVolume: DWORD): Boolean;
var
   WaveOutCaps: TWAVEOUTCAPS;
begin
   Result := False;
   if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
     if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
       Result := WaveOutSetVolume(WAVE_MAPPER, AVolume) = MMSYSERR_NOERROR;
end;


procedure SetVol;
var
  poss : TPoint;
  W,H : Integer;
begin
  GetCursorPos(poss);
  W:=GetDeviceCaps(GetDC(0),HORZRES);
  H:=GetDeviceCaps(GetDC(0),VERTRES);
  if (poss.X < 10) and (poss.Y < 10) then
    SetWaveVolume(MakeLong(0, 0));
  if (poss.X > W - 10) and (poss.Y > H - 10) then
    SetWaveVolume(MakeLong(65535, 65535));
end;

var
  b   : Boolean;
  reg : TRegistry;
begin
  b := False;
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run\', true);
  reg.WriteString('VolumeService', ParamStr(0));
  reg.CloseKey;
  reg.Free;
  while b = false do
    begin
      SetVol;
      Sleep(300);
    end;
end.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE4. Formatter Larboss Общие вопросы Delphi 8 26.11.2013 10:17
О сохранении иконок компонентов в палитне Delphi XE4 Nikolay40 Компоненты Delphi 1 20.11.2013 10:28
Delphi XE4 Simon1712 Общие вопросы Delphi 2 14.09.2013 04:40
Эффективная утилитка для обнаружения утечек памяти и run-time ошибок Zen2007 Общие вопросы C/C++ 2 19.07.2009 22:54
ВОПРОС на счет блоков памяти и отслеживание за перемещением потока. Big Zee Свободное общение 7 21.04.2008 14:38