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

 eXeL@B —› Вопросы новичков —› Способы посчитать время с момента начала работы процесса
Посл.ответ Сообщение

Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 сентября 2009 08:46
· Личное сообщение · #1

Есть процесс. После двух минут работы одна из функций этого процесса прекращает работать. Когда ставлю процесс на паузу в отладчике, время для него не идёт. Т.е. я подозреваю, что посчитано время исполнения каких-то участков кода и оно просто суммируется где-то. Какой подход правильней всего использовать в данной ситуации для поиска? И как наиболее эффективно использовать для этого IDA? Просто Ооочень давно этим не занимался...
Хочется видеть в теме перечисленные способы и ссылки на документы/разделы документов к IDA, чтоб не отнимать Ваше время на демагогии.

Спасибо,
VaD)




Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 23 сентября 2009 10:16
· Личное сообщение · #2

Ты хочешь реализовать антиотладку основанную на замере времени? Не лучший выбор... Но вот тут в общих чертах об антиотладке.



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 сентября 2009 10:28
· Личное сообщение · #3

Нет, я хочу исправить неправильно работающую dll-ку))
RDTSC, GetTickCount - не то, что могло бы работать в моём случае, хотя GetTickCount есть(4). Антиотладочных приёмов явных в dll нет, при заморозке процесса счётчик замораживается тоже, а значения GetTickCount-нет.
Ещё там есть QueryPerformanceCounter, с помощью которого возможно и ведутся дальнейшие рассчёты времени работы процесса....




Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 23 сентября 2009 12:40
· Личное сообщение · #4

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



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 сентября 2009 16:28 · Поправил: VaD
· Личное сообщение · #5

Нету там антиотладки блин...
Щас бы вот оценить, в какие функции перестала заходить dllка...Как-то долго самому трассировку полную делать))




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

Создано: 23 сентября 2009 17:40
· Личное сообщение · #6

Выложил бы чо-нить, гадать, что ли?



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 сентября 2009 18:14 · Поправил: VaD
· Личное сообщение · #7

Вся проблема в том, что ядро этого синта работает на отдельном DSP (паверкор МК1) процессоре и без него VST dll не работает правильно...Так что боюсь что остальным придётся только гадать по коду. Но я сейчас загружу куда-нибудь инсталляшку (до недавнего времени она была доступна на оф. сайте акцесс-мьюзик)...С удовольствием сделал бы пак, который включал бы в себя все зависимости, если подскажете каким пакером это сделать (убейте-не помню сейчас, как он называется, но что-то было раньше...)

http://slil.ru/28009686 сам инструмент

http://slil.ru/28009726 некоторые dllки...


Некоторые отладчики (w32Dasm например) не хотят загружать модули с такими длинными именами, я просто переименовал хост (он тоже понадобится чтобы dllку загрузить)(http://slil.ru/28009749) в vpc.exe, и "Vирус Паверкор Dемо.dll" в vpc.dll и от проблемы избавился.

PS сорри что пишу английские слова русскими буквами, вдруг форум закешируется в гугле, у меня в ТС сразу акк заблокируют или ещё чё-нить нехорошее придумают.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 25 сентября 2009 12:59 · Поправил: Crawler
· Личное сообщение · #8

VaD
так тебе надо, чтобы функция работала?

надо потрэйсить да и посмотреть.

что там используется, интересно. если rdtsc, можно драйвер эмуляции результатов взять на васме.



А что за VST dll? синт какой-то, что ли?
по-моему, большинство нормальных давно уже сломано, а бажные - исправлены.

Кстати, странная хрень происходит в real guitar, там звук пропадает, хотя плаг ломаный. бред какой-то

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 сентября 2009 18:32
· Личное сообщение · #9

Вот и тут звук пропадает...(с другими эвентами гораздо проще-знаешь, где их отслеживать.)Уж и не знаю, как это отследить, надо принципы работы (моменты передачи сгенерированного куска) получше изучить, трейсить умрёшь...слишком долго..RDTSC нет, есть другое предположение, оно сейчас прорабатывается...Синт акцесс вирус.




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 29 сентября 2009 13:07
· Личное сообщение · #10

VaD
Если я тебя правильно понял, то можно, к примеру, прикрутить плагин к FLStudio, например, поставить точку останова на сообщение от клавиатуры, посмотреть, как генерится звучок.
Потом, когда звук пропадет, сделать это еще раз и посмотреть отличия.

Можно обращения к ASIO посмотреть, я хз, как там этот плагин устроен.

Я вот хочу реал гитар разреверсить, поэтому и интересно ) убирали же как то такую проблему в Toxic 3 Biohazard. Правда, там не звучок исчезал, а генератор шума был.
Видимо, все-таки какой-то хитрозадый таймер там присутствует. Может, к системному времени привязка какая-нибудь тупая...

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 сентября 2009 18:06 · Поправил: VaD
· Личное сообщение · #11

начну по порядку:
1) не к системному, ибо когда фризится(обычная пауза в дебаггере или бряк) плагин, время для него не идёт, а системное идёт (фризю не софтайсом, вроде во время софтайса даже время не идёт). Значит там считают какие-нить буфера, которые проходят к драйверу звуковухи......я если честно на той неделе халявил отн. исследований, по личным обстоятельствам...
2) с FLStudio не стал связываться ибо есть хорошая штука-легковесный VST хост (SAVIHost standalone VSTi host V1.32 у меня, такое вот оф. название)
3) звук генерируется 100% через жопу, ибо какая-то половина делается на отдельном процессоре в DSP карте (хотя было бы неплохо докопать до момента, когда выяснится что в данном случае это большая зелёная ненужная железяка)...Ещё раз-не было времени разобраться.

PS эх блин, пока пост писал-запустил тот синт-звук просто улёт. Токсики и рядом не стоят...



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 октября 2009 11:44 · Поправил: VaD
· Личное сообщение · #12

Важно:
у меня сложности с глобальными брейкпоинтами. Есть некоторые процессы (запускаются дровами (или где-то рядом с этими дровами) к железке, на которой крутится ядро отлаживаемого синтезатора), которые мне нужно отследить. Если раньше в софтайсе на CreateProcess ставишь брейкпоинт, то всё ништяк находилось, а сейчас я даже и не представляю, где глобальный брейкпоинт поставить можно... Sice не ставится на SP3, насколько я успел мельком пробежаться. Как сейчас принято глобальные брейкпоинты ставить?

update:
Маленькие подробности, выясненные случайно)
Прекращается не аудио, прекращается подача миди-сигналов генератору. Выяснено следующим образом:
мышкой (лень было подключать миди-клаву) просто тупо игрались нотки на виртуальной клавиатуре в СавиХОСТе, и я решил попробовать наиграть мелодию не отпуская кнопки мыши "а-ля всегда нажатая клавиша". К моему удивлению по истечении стандартных 2х минут звук не прекратился, даже после 4х минут не прекратился!! Тогда я решил попробовать в секвенсор загрузить этот плагин и потестировать с клавиатуры (обычной компьютерной, но там она канает и в качестве миди). Ситуация сложилась следующим образом: в принципе когда на границе положенного времени начинаешь держать кнопку, звук идёт. Но стоит нажать параллельно вторую-звук пропадает, т.е. миди-канал "закрывается" при попытке посыла следующего миди-события (нажатия второй клавиши). Теперь я знаю что не надо копать в сторону аудио)



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 января 2010 16:30
· Личное сообщение · #13

Итак, на главный вопрос в начале темы ответ получен: считаются семплы, отданые драйверу асио. По достижению определённого количества семплов (чем больше частота дискретизации, тем меньше кол-во семплов отдаётся драйверу), т.е. если я выставляю на карточке частоту дискретизации 192 кГц, то синт работает всего 25-30 секунд или типа того, вместо 2х минут при 44100.

Появился новый вопрос, как мне определить что за тип данных передаётся устройству. Происходит вызов ф-ии DeviceIOControl с параметрами

API NODOC Arg00 = DeviceIoControl(Arg01,Arg02,Arg03,Arg04,Arg05,Arg06,Arg07,Arg08)
API Address=01FE1E23, API Return Address=01FE1E29
Arg01 = 00000180
Arg02 = 00220046 ->(LPDWORD)7e37f40b or (LPSTR)""
Arg03 = 00000000
Arg04 = 00000000
Arg05 = 00eb10f8 ->(LPDWORD)3f5bf556 or (LPSTR)"Võ[?uÉþ<éx¦X5¾%>ë_…ÕüºÓJJº¶dÿ^WÄ_;ƒ#aéÚ=hfð8NêŽ4Yè|ûKQ¤| ‰× èëD£"
Arg06 = 0005ada8 ->(LPDWORD)3f5bf556 or (LPSTR)""
Arg07 = 0012e330 ->(LPDWORD)00000000 or (LPSTR)""
Arg08 = 00000000

RESULT for API DeviceIoControl
Arg00 = 00000001
Arg01 = 00000180
Arg02 = 00220046 ->(LPDWORD)7e37f40b or (LPSTR)""
Arg03 = 00000000
Arg04 = 00000000
Arg05 = 00eb10f8 ->(LPDWORD)3f5bf556 or (LPSTR)"Võ[?uÉþ<éx¦X5¾%>ë_…ÕüºÓJJº¶dÿ^WÄ_;ƒ#aéÚ=hfð8NêŽ4Yè|ûKQ¤| ‰× èëD£"
Arg06 = 0005ada8 ->(LPDWORD)3f5bf556 or (LPSTR)""
Arg07 = 0012e330 ->(LPDWORD)00000000 or (LPSTR)""
Arg08 = 00000000

где Arg05-это, как мне кажется начальный адрес памяти кода, который должен быть загружен на мотороловский процессор и исполнен там, но я пока не уверен, а Arg06- размер этого кода в памяти.
Если я ошибаюсь, дайте знать...
Дамп в аттаче. Кстати, он не сжимается раром, т.е. как будто бы в нём уже нет избыточной информации...


2a92_03.01.2010_CRACKLAB.rU.tgz - demoDSPpart.rar


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


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