Отладка приложений


Таблицы символов, символьные машины и проход стека - часть 14


FPO-данные — это таблица, которую функция stackwalk использует для вычислений, связанных с обработкой тех функций, которые пропускают нормальную область стека. Мы рассматриваем FPO-данные еще и потому, что ссылки на них иногда встречаются в MSDN и в различных отладчиках. Можно подробнее познакомиться со структурой FPO-данных в файле WINNT.H.

 Листинг 4-8. InitializeStackFrameWithGontext из i386CPUHELP.C

BOOL CPUHELP_DLLINTERFACE _stdcall

InitializeStackFrameWithContext ( STACKFRAME * pStack,

CONTEXT * pCtx)

{

ASSERT ( FALSE == IsBadReadPtr ( pCtx, sizeof ( CONTEXT))); 

ASSERT ( FALSE == IsBadWritePtr ( pStack, sizeof ( STACKFRAME)) 

} ;

if ( ( TRUE == IsBadReadPtr ( pCtx, sizeof ( CONTEXT))) ||

( TRUE == IsBadWritePtr ( pStack, sizeof ( STACKFRAME)))) 

{

return ( FALSE);

 }

pStack->AddrPC.Offset = pCtx->Eip; 

pStack->AddrPC.Mode = AddrModeFlat ;

 pStack->AddrStack.Offset = pCtx->Esp;

 pStack->AddrStack.Mode = AddrModeFlat ;

 pStack->AddrFrame.Offset = pCtx->Ebp;

 pStack->AddrFrame.Mode = AddrModeFlat ;

 return ( TRUE); 

}

 




Начало  Назад  Вперед



Книжный магазин