Есть драйвер, перезапускаемый из Config Manager (audio miniport). Для перезапуска использую "devcon restart". Драйвер загружается в XP SP2, работающей под VMware Workstation 6.0.2, отлаживается в хостовой XP SP2 из WinDbg 6.8.4.0.
Если перед перезапуском поставить стоп-точку в функции DriverEntry, то после подачи команды перезапуска гостевая система начинает жрать 100% CPU, но не виснет, а просто тормозит. Минут через пять перезапуск помаленьку начинается (драйвер медленно завершается и выгружается), затем срабатывает стоп-точка в DriverEntry, после чего все работает по-прежнему быстро. Если стоп-точку ставить в другой функции, такого эффекта нет.
Поскольку функция DriverEntry запихана в секцию INIT, и на момент установки стоп-точки в памяти отсутствует, создается ощущение, что либо WinDbg этого не просекает, либо имеют место глюки управления памятью в VMware. Поскольку 6.0.2 за несколько месяцев никаких других проблем не порождала, склоняюсь к первому
Установка стоп-точки командой bu ситуации не меняет.
Можно ли поставить стоп-точку так, чтобы она нормально сработала в такой ситуации?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, MShura, Вы писали:
MS>__debugbreak() при условии, что есть в реестре есть определеный ключик.
Это уже слишком радикально — мне нетрудно и просто перекомпилировать, просто удивился такому эффекту
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
MS>>__debugbreak() при условии, что есть в реестре есть определеный ключик.
ЕМ>Это уже слишком радикально — мне нетрудно и просто перекомпилировать, просто удивился такому эффекту
Добавьте к этому:
вести или не вести логи, а также что логгировать — всё из реестра, а не перекомпиляцией.
Здравствуйте, MShura, Вы писали:
MS>Добавьте к этому:
MS>вести или не вести логи, а также что логгировать — всё из реестра, а не перекомпиляцией.
Это у меня есть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Можно ли поставить стоп-точку так, чтобы она нормально сработала в такой ситуации?
Можно посмотреть стек вызовов и попробовать поставить её на вызывающий call. Если там много чего еще перезапускается, то сделать бряк условным, по младшему слову адреса entry point.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth