Сейчас на форуме: _MBK_, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Delphi - > Отладка bpl
Посл.ответ Сообщение

Ранг: 24.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 16 сентября 2008 16:34
· Личное сообщение · #1

Здравствуйте! У меня вопрос по отлаживанию компонентов делфи(*.bpl загружаемых вместе со средой).
Как можно пошагово отладить bpl модуль который загружает Делфи ? Например у нас есть какой-то модуль, я хочу проверить как выполняется он, посмотреть регистры и стек. Я знаю два варианта:
1. В олли дбг поставить прерывание на загрузке нового модуля(dll), но этот метод не подходит поскольку делфи загружает очеееень много модулей.
2. Поставить в нужном месте модуля INT3 и отловить SoftIce'ом но его ставить на рабочую систему нельзя.

Подскажите пожалуйста как это можно сделать, желательно в Оли.
И еще один момент, по скольку bpl это та же dll и загружаться она, вроде бы, должна каждый раз по разным адресам, как высчитывать адрес(как он отличается от адреса который показывает IDA) ?

Заранее большое спасибо!



Ранг: 19.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 16 сентября 2008 22:01 · Поправил: Neo32
· Личное сообщение · #2

crio можно попробовать проверить работу отдельных функций ,ставь в оле бряк bp имя функции и отлаживай.А зачем тебе адрес загрузки надо знать?Вычислить его не возможно он разный насколько я знаю.



Ранг: 24.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 17 сентября 2008 14:50
· Личное сообщение · #3

Neo32 пишет:
А зачем тебе адрес загрузки надо знать?

Например я в Иде нашел код и мне нужно остановиться на этом коде когда делфи загружает модуль.

Neo32 пишет:
ставь в оле бряк bp имя функции

ну во-первых мне не нужна не конкретная функция, а какой-то участок кода, а во-вторых как это сделать, если делфи динамично подгружает длл ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 сентября 2008 16:05
· Личное сообщение · #4

Ну если не нравится брякаться на каждой длл (что, в общем то, не так уж и сложно, вряд ли больше 50 их загружается)-жди, пока загрузятся все, а потом тыкай бряк. Правда, не покатит, если событие происходит на загрузке. Как вариант-тыкай железный бряк, вряд ли либа загрузится по новому адресу (если винда < висты).



Ранг: 24.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 17 сентября 2008 16:15
· Личное сообщение · #5

а есть ли какой-то по проще метод чем 50 раз клацать ? есть ли какой-то условный бряк по имени модуля подгружаемому ? Типа бряк на LoadLibrary если модуль "xxx.bpl" ?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 сентября 2008 16:41
· Личное сообщение · #6

crio пишет:
2. Поставить в нужном месте модуля INT3 и отловить SoftIce'ом но его ставить на рабочую систему нельзя.


поставь инт3 и запусти дельфу в ольге она прервётся где нада.

-----
[nice coder and reverser]




Ранг: 19.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 18 сентября 2008 18:00
· Личное сообщение · #7

crio набери условный брейк типа bp LoadLibraryA,[esp+4] == "uxtheme.dll"


 eXeL@B —› Вопросы новичков —› Delphi - > Отладка bpl
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати