Hello, lav03!
You wrote on Mon, 01 Dec 2003 08:57:34 GMT:
l> Нет, на самом деле я ловлю CMemoryException*, это описка. И оно ловится
l> именно в foo(), только вот foo(), почему-то, в стеке не присутствует во
l> время снятия списка вызовов. Усли убрать try...catch из foo(), то оно
l> поймается в OnBnClickedButton1() и адрес этой OnBnClickedButton1() будет
l> отсутствовать в дампе, а следующим после 7FFE0304 0012FA14 0000:00000000
l> будет адрес _AfxDispatchCmdMsg. Не понимаю, почему ф-ция, из которой
l> выброшено C++ исключение отсутствует в списке вызовов, ведь на момент
l> снятия дампа мы из ее тела еще не вышли.
Эта фигня происходит из-за того, что функция ZwGetContextThread скомпилена без кадра стека. Поэтому IntelStackWalk хватает кадр предыдущей функции (foo), из которого вытаскивает адрес возврата на OnBnClickedButton1(). В результате foo в дамп не попадает.
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.