Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание используемых DLL 
:(
    Опции темы
DarkProg
Дата 28.2.2012, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Название темы не слишком отражает суть и сейчас попробую описать, что я имел ввиду.
В общем есть проект, уже достаточно крупный и у него есть одна проблема - жрёт оперативы немеренно(ну мне лично параллельно с 4Гб, а вот есть юзверя пользователи у которых всего 256Мб, да-да именно столько).
При запуске программы в отладчике вижу быстро пробегающие всякие подключения библиотек например, ole.dll(меня особенно радует одна DLL которая имеет имя UNKNOWN_MODULE_3.dll или может быть UNKNOWN_MODULE_8.dll)

У меня возникает вопрос а можно ли как-то отследить какие библиотеки подключаются и может попробовать отключить их, если они не используются, такое в принципе возможно?

В общем я понимаю что эти библиотеки подключаются компонентами на автомате и отключить их будет весьма сложно, но всё же, может есть способы, а то я уже потерялся как поисковику задать вопрос...



--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
northener
Дата 29.2.2012, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



"Описание"  тоже не слишком отражает суть. Ибо "подключение библиотек" отнюдь не означает "пожирание памяти".


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Чучмек
Дата 29.2.2012, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Отследить какие, и когда подключаются - можно.
Отключить-если подгружается динамически. Но если произойдет вызов функции из выгруженной dll - то все, приехали.
Хотя и здесь, кое-что можно придумать. 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
DarkProg
Дата 29.2.2012, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(Чучмек @  29.2.2012,  01:44 Найти цитируемый пост)
Отследить какие, и когда подключаются - можно.

Как?


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
MrDmitry
Дата 29.2.2012, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



Я извиняюсь но если у тебя цепляются такие библиотеки то скорее дело в руках а не в модулях которые что то там подключают и куда то там подключаются. Как ты смог сделать программу если даже не знаешь что у тебя может вызываться и почему? Еще раз извиняюсь, ни чего личного, но думаю для того чтобы тебе дать более менее ясный ответ нужно знать как минимум что за 'уже достаточно крупный' проект. Ну и желательно хоть чуть чуть кода
PM MAIL   Вверх
DarkProg
Дата 29.2.2012, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(MrDmitry @  29.2.2012,  10:32 Найти цитируемый пост)
Ну и желательно хоть чуть чуть кода

Не вариант. Коммерческая тайна. Я то впринципе могу выложить скажем какую-нить функцию, но смысла в ней не будет, а показывать модуль в 3-4 или даже 5 тысяч строк кода это будет нарушением коммерческой тайны.

Цитата(MrDmitry @  29.2.2012,  10:32 Найти цитируемый пост)
Я извиняюсь но если у тебя цепляются такие библиотеки то скорее дело в руках а не в модулях которые что то там подключают и куда то там подключаются.

Я достоверно знаю ограниченный набор библиотек без которых работать программа не будет и которые я сам подключаю, вопрос в том чтобы отследить то что я сам не подключаю.

Цитата(MrDmitry @  29.2.2012,  10:32 Найти цитируемый пост)
Как ты смог сделать программу если даже не знаешь что у тебя может вызываться и почему?

Эммм, я конечно спрошу с издёвкой, но вы сами-то знаете все Api функции которые вызываются при открытии скажем формы в программе?

Добавлено через 6 минут и 36 секунд
Собственно глядя на Messages бегущих при запуске программы вижу вот такую библиотеку HHCTRL.OCX, которая отвечает за работа c CHM, но в программе нет файла справки вообще(до справки руки доходят весьма редко, поэтому нет такого), вот как определить что подключает эту библиотеку и отключить?


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
CodeMonkey
Дата 29.2.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



View/Debug windows/Modules - ставим Break on load для нужных модулей.

Большая часть библиотек подгружается как зависимость других. Часть - как глобальные хуки и расширения проводника.

Добавлено через 3 минуты и 16 секунд
Цитата(DarkProg @  29.2.2012,  00:30 Найти цитируемый пост)
У меня возникает вопрос а можно ли как-то отследить какие библиотеки подключаются и может попробовать отключить их, если они не используются, такое в принципе возможно?


Вопрос поставлен неверно. Если звёзды зажигают библиотеку загружают - значит, это кому-то нужно. Иными словами, не может быть такого "если они не используются". Они как раз используются. Иначе не загружались бы.

Цитата(DarkProg @  29.2.2012,  00:30 Найти цитируемый пост)
жрёт оперативы немеренно


И снова вопрос поставлен неверно. Загрузка библиотеки не означает нагрузку на физическую память.

Рекомендую:
http://www.gunsmoker.ru/2011/04/windows.html
http://www.gunsmoker.ru/2011/04/windows-spin-off.html
http://www.gunsmoker.ru/2011/06/blog-post.html


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
DarkProg
Дата 29.2.2012, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(CodeMonkey @  29.2.2012,  17:35 Найти цитируемый пост)
библиотеку загружают - значит, это кому-то нужно. Иными словами, не может быть такого "если они не используются". 

Не могу с этим спорить.

Цитата(CodeMonkey @  29.2.2012,  17:35 Найти цитируемый пост)
View/Debug windows/Modules - ставим Break on load для нужных модулей.

Попробовал вижу уже непонятно зачем подключаемую библиотеку TORTOISEOVERLAYS.dll - это от TortoiseSVN. Зачем эта библиотека сдалась в принципе программе, ведь сама же программа не умеет работать с репозиториями и в принципе не работает, хотя черепашку юзаем для обмена проектом?


Почитаю, чуть позже уже вижу, что будет полезно.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
CodeMonkey
Дата 29.2.2012, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(DarkProg @  29.2.2012,  18:33 Найти цитируемый пост)
Попробовал вижу уже непонятно зачем подключаемую библиотеку TORTOISEOVERLAYS.dll - это от TortoiseSVN. Зачем эта библиотека сдалась в принципе программе, ведь сама же программа не умеет работать с репозиториями и в принципе не работает, хотя черепашку юзаем для обмена проектом?


Прога - гуёвая? Есть диалоги или Shell-контролы? Если есть - значит, надо показывать список папок. Вот тебе и TORTOISEOVERLAYS.dll - она показывает статус папок: лежат они в SVN или нет. Всё понятно.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
DarkProg
Дата 29.2.2012, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(CodeMonkey @  29.2.2012,  18:36 Найти цитируемый пост)
Прога - гуёвая? Есть диалоги или Shell-контролы? Если есть - значит, надо показывать список папок.

Да, GUI. Только я полагал, что при открытии файла(когда вызывается диалог открытия или сохранения) используются библиотеки виндоуса и собственно винда должна этим заниматься или я что-то не понимаю? 


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
superVad
Дата 29.2.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Цитата(DarkProg @  29.2.2012,  17:21 Найти цитируемый пост)
Да, GUI. Только я полагал, что при открытии файла(когда вызывается диалог открытия или сохранения) используются библиотеки виндоуса и собственно винда должна этим заниматься или я что-то не понимаю? 

Может, как раз, какая то виндовая библиотека тянет ее за собой.

А по делу - много в проге создается форм при загрузке?

Это сообщение отредактировал(а) superVad - 29.2.2012, 19:35
PM MAIL   Вверх
DarkProg
Дата 29.2.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(superVad @  29.2.2012,  20:34 Найти цитируемый пост)
А по делу - много в проге создается форм при загрузке?

1 штука - главная. Вдобавок штук 5-8 модулей - без них никак.

Да, я тут 
Цитата(CodeMonkey @  29.2.2012,  17:35 Найти цитируемый пост)
http://www.gunsmoker.ru/2011/04/windows.html
http://www.gunsmoker.ru/2011/04/windows-spin-off.html
http://www.gunsmoker.ru/2011/06/blog-post.html 

почитал, сижу играюсь, нашёл небольшие утечки памяти, но не настолько, чтобы прям критично


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
superVad
Дата 29.2.2012, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Цитата(DarkProg @  29.2.2012,  19:41 Найти цитируемый пост)
1 штука - главная. Вдобавок штук 5-8 модулей - без них никак.

Ну десяток модулей в автокриейте - вроде и не очень много.
Ищи тогда на что память расходуется. Может деревья какие то, датасеты... А там уже можно думать, что с этим делать.
PM MAIL   Вверх
DarkProg
Дата 29.2.2012, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 2
Всего: 19



Цитата(superVad @  29.2.2012,  21:58 Найти цитируемый пост)
Ну десяток модулей в автокриейте - вроде и не очень много.
Ищи тогда на что память расходуется.

Ну в общем есть объективный расход памяти(пара модулей будут весьма объёмистыми - один с горой иконок, другой ещё со всякой фигнёй), но мне всё же кажется он должен быть меньше(на порядок меньше).
Есть реально классы которые создаются при запуске программы и без них никак совсем. Датасетов две калеки, которые даже в открытом состоянии без параметров больше двух десятков записей не покажут.
Самые критичные места уже потестил и там память не теряется, но зато в других местах нашёл где утекает

Раз пошла такая пьянка, то у меня такой вопрос, а функция Empty Working Set спасёт отца русской демократии? Я так понимаю что всё, что программе не требуется будет скинуто в файл подкачки на жёсткий диск, так?

Это сообщение отредактировал(а) DarkProg - 29.2.2012, 21:54


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
CodeMonkey
Дата 1.3.2012, 15:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(DarkProg @  29.2.2012,  19:21 Найти цитируемый пост)
Только я полагал, что при открытии файла(когда вызывается диалог открытия или сохранения) используются библиотеки виндоуса и собственно винда должна этим заниматься или я что-то не понимаю?  


Да, вероятно не понимаешь. Могу посоветоввать Рихтера ("Windows для проффесионалов") или более внимательное изучение вышеуказанного цикла. Если кратко и грубо - пользовательская часть Windows (не ядро) находится в твоей программе. 

Цитата(DarkProg @  29.2.2012,  22:54 Найти цитируемый пост)
а функция Empty Working Set спасёт отца русской демократии?


Нет. Она лишь замедлит выполнение твоей программы. Если сильно хочется её всунуть - пиши её сразу перед Application.Run в dpr.




Вообще, о чём разговор, когда никаких конкретных цифр не было? Ты приведи значения private bytes, working set и VM size при старте и после некоторой работы - вот тогда предметно можно говорить. А так - в воздухе руками махать.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.