Hello, lav03!
You wrote on Fri, 28 Nov 2003 18:00:36 GMT:
l> и в обработчике для CMemoryException получу контекст-рекорд
l> CONTEXT Context;
l> Context.ContextFlags = CONTEXT_FULL;
l> GetThreadContext(m_hThread, &Context);
l> IntelStackWalk(&Context);
l> первый адрес в дампе получаю какой — то бещеный:
l> Address Frame Logical addr Module
l> 7FFE0304 0012FA14 0000:00000000
Это адрес в NTDLL.DLL — функция ZwGetContextThread. А что ты там ожидал увидеть?
l> а следующий адрес указывает даже не на мою foo(), а на
l> OnBnClickedButton1().
А что отладчик показывает в стеке?
l> Такое ощущение, что фрейм не формируется.
Функция GetThreadContext действительно без фрейма, поэтому ее в дампе и не будет. А вообще отладчиком глянь.
l> Делел в VC++7. Опцию /Oy отключил.
l> Не пойму разницы. По крайней мере адрес возврата из foo() должен быть в
l> стеке
У тебя исключение где поймалось — в OnBnClickedButton1 или в foo? Судя по приведенному коду, оно вообще ловиться не должно, поскольку кидаешь ты CMemoryException*, а ловишь CMemoryException.
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.