Не пойму как SIce работает с исключениями. Стоя на команде, которая даст 100% страничный сбой нажимаю трассировать. Смотрю по IDT попасть должны были куда то в ntoskrnl а на самом деле мы уже в ntdll в UserMode ExceptionDispetcher. Я понимаю почему отладчики 3-го кольца проскакивают привилегированный код, но вот что происходит с SI я не пойму. Может я не знаю каких-то технических тонкостей работы процессора, хотя мне кажется, что отладчик делает это умышленно. Зачем???
VooDooo Не буду претендовать на достаточно близкую передачу текста на английском (на сайте SoftICE), но эти ребята похоже хотят заработать на своем отладчике, а для этого пользуются услугами и технической документацией Microsoft, и подписали акт о неразглашении или что-то в этом роде. Кроме того SoftICE от версии к версии становиться более "дружелюбной" к пользователю, и додумывает за него, даже вопреки его задачам. Конкретно по твоему случаю я использую bpint 0E или bpint 0D, а на комманде вызывающей исключение нажимаю F5 а не F8, и действительно попадаю в ntoskrnl. !!!NB!!! в режим трасировки в SoftICE сильно отличается от режима реального выполнения, (это связанно с невозможностью быстро выводить инфо на экран на слабых машинах, и отсутсвием эмуляции TSC), потому не все инструкции возможно выполнить в режиме трассировки так же как и в реальном режиме.
PROFi Спасибо, да так и есть. Я ведь ставил бряк на 14-ом прерывании, тока нажимал не F5, а F8. Видимо на самом деле SIce предсказывает прерывание и толи ставит бряк в ntdll, толи сам обрабатывает прерывание и потом уже переходит туда не непосредственно. Хочется развить эту тему, интересно знать как работает сайс изнутри так сказать, где бы об этом почитать? P.S. Извините еще такой вопросик как у кого настроен в сайсе показ стека, как сделать, чтоб он по-человечески выводился столбиком DWORD'ов как в других отладчиках???
VooDooo Извините еще такой вопросик как у кого настроен в сайсе показ стека, как сделать, чтоб он по-человечески выводился столбиком DWORD'ов как в других отладчиках??? так например: ed esp если нужно отобразить содержимое по адресу в стеке например esp+4, то так: ed *(esp+4) А вообще я SoftICE уже использую редко (использую свой отладчик). Раньше изучал внутренности SoftICE, но .. чесно сказать - технологии используемые отладчиком меня не впечатлили БЕЗДАРНО!!! Кроме того даже в последней верии не используются громадные возможности отладки предоставляемые процессором Pentium 3 и выше. Потому SoftICE для изучения CPU подходит только на начальных этапах.