хай всем такой вопрос отлаживаю драйвер через windbg в произвольный момент eip драйвера оказывается равен левому числу, которое я заметил в стеке, тоесть очевидно на него совершается возврат. сперва подумал на ret, повставлял перед каждым ret проверку правильности адреса возврата - ничё не дало. потом тоже самое поделал везде где адрес прыжка call/jmp не константен, тоже ничё не дало. есть ли способ заставить windbg трейсить код автоматически, чтоб я мог хоть как-то понять откуда происходит фатальный прыжок ? или может есть профайлер какой ?
в windbg можно писать отладочные скрипты. Пример из моих закромов: Конечно, в твоем случае надо придумывать чото свое. Так что прийдется курить доки по коммандам дебаггера.
нутак сделай скрипт с пошаговой анимацией, - ход выполнения будет отображаться в основном логе. Там вроде как есть комманда цикла ".while" (сам чесслово не пользовал).
vladqq В стеке полюбому должны быть адреса возврата из функций. Если их нет, то недавно была смена кпл нулевое, тоесть проблемы в обработчиках самого верхнего уровня, скорее всего вы сст затрагиваете, хотя всёравно адрес возврата хотябы в код формирующий трап-фрейм должен быть. Значит стек сбалансирован и не изза этого рушится. Опишите подробно проблему, что за произвольный момент и возврат.