Посл.ответ |
Сообщение |
Ранг: 20.4 (новичок), 1thx Активность: 0.03↘0 Статус: Участник
|
Создано: 27 февраля 2011 10:56 · Личное сообщение · #1
Не могу понять как поставить бп на длл аттач и длл детач, на EP пожалуйста. Вообщем помогите новичку =(
| Сообщение посчитали полезным: |
|
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 27 февраля 2011 11:18 · Личное сообщение · #2
В настройках в эвентах вполне есть галка, останавливаться на загрузке или выгрузке длл. Нужен бряк на точку входа-смотри список модулей и там тыкай руками, при остановке на загрузке точка входа ещё не исполнялась. И почитай статьи, хотя бы основные по возможностям ольки, чтоб не задавать вопрос, где какая галка в настройках.
| Сообщение посчитали полезным: |
Ранг: 20.4 (новичок), 1thx Активность: 0.03↘0 Статус: Участник
|
Создано: 27 февраля 2011 11:47 · Личное сообщение · #3
Тогда как ты можешь объяснить что в ЕР есть такая комманда? : DisableThreadLibraryCalls(); Допустим код длл :
Как код2 может быть выполнен раньше кода1? Я что то не врубаюсь...
| Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 27 февраля 2011 12:07 · Поправил: Clerk · Личное сообщение · #4
Поставить брейк на LdrpCallInitRoutine(). Можно есчо в конфиге указать параметр "BreakOnDllLoad", тогда до нотификации сработает останов. > Как код2 может быть выполнен раньше кода1? Я что то не врубаюсь... Не может он выполниться раньше. Поток нормально свичи не проскакивает, это баги компилятора.
| Сообщение посчитали полезным: |
Ранг: 20.4 (новичок), 1thx Активность: 0.03↘0 Статус: Участник
|
Создано: 27 февраля 2011 12:59 · Личное сообщение · #5
Ладно поставлю вопрос по другому, допустим у меня есть процесс, в этот процесс загружается длл с другого процесса, я поставил галочку в эвентах на "Break on new module" и оля удачно ловит загрузку длл в процесс, но проблема в том что далее при троссировке я в этот длл не попадаю, а начинаю тупо шагать по главному процессу, а мне нужно наоборот, что бы оля игнорировала всё кроме этого модуля, что бы тросировался только он.
| Сообщение посчитали полезным: |
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 27 февраля 2011 13:27 · Личное сообщение · #6
Дык при сообщении, что модуль подгрузился, возьми да поставь бряк на точку входа это модуля. Ибо олька брякается на сообщении отладчику, а не на точке входа. И трассируй себе на здоровье.
| Сообщение посчитали полезным: |
Ранг: 20.4 (новичок), 1thx Активность: 0.03↘0 Статус: Участник
|
Создано: 27 февраля 2011 13:41 · Личное сообщение · #7
Да, но тросируется длл только до RETa, далее снова, возвращяется в главный модуль, при этом длл совершает какие-то действия, как сделать так что бы олля игнориля всё кроме заинжекченного длл?
| Сообщение посчитали полезным: |
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 27 февраля 2011 15:32 · Личное сообщение · #8
Ну дык точка выхода выполняется и всё, управление возвращается обратно, видимо. Никак. Разбирайся, где ещё получает управление она. Может, поток создаёт, может, что хучит, может, кто-то экспорт дёргает из неё. В крайнем случае бряк на всю секцию кода длл можно тыкать.
| Сообщение посчитали полезным: |
 Ранг: 57.7 (постоянный), 49thx Активность: 0.07↘0 Статус: Участник
|
Создано: 28 февраля 2011 01:28 · Личное сообщение · #9
Skino пишет: как сделать так что бы олля игнориля всё кроме заинжекченного длл? Поставь мемори брейк на доступ к DLL (Set memory breakpoint on access) и будешь трейсить саму DLL по нажатию F9
| Сообщение посчитали полезным: |