Re[17]: Дамп стека при возникновении исключения
От: Sergey Россия  
Дата: 01.12.03 08:21
Оценка:
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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.