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


Использование CrashHandler API - часть 12


 g_stFrame.Params[ 1 ] ,

 g_stFrame.Params[ 2 ] ,

 g_stFrame.Params[ 3 ] ); 

}

// Вывести имя модуля.

if ( GSTSO_MODULE = ( dwOpts & GSTSO_MODULE)) 

{

iCurr += wsprintf ( g_szBuff + iCurr , _T ( " ")); 

ASSERT ( iCurr < ( BUFF_SIZE - MAX_PATH));

iCurr += BSUGetModuleBaseName ( GetCurrentProcess (),

(HINSTANCE)dwModBase,

 g_szBuff + iCurr , 

BUFF_SIZE - iCurr ); 

}

ASSERT ( iCurr < ( BUFF_SIZE - MAX_PATH)); 

DWORD dwDisp; 

// Вывести имя символа?

if ( GSTSO_SYMBOL == ( dwOpts & GSTSO_SYMBOL)) 

{

// Начать поиск адреса исключения.

PIMAGEHLP_SYMBOL pSym = (PIMAGEHLP_SYMBOL)Sg_stSymbol;

ZeroMemory ( pSym, SYM_BUFF_SIZE);

pSym->SizeOfStruct = sizeof ( IMAGEHLP_SYMBOL);

pSym->MaxNameLength = SYM_BUFF_SIZE -

sizeof ( IMAGEHLP_SYMBOL); 

if ( TRUE ==

SymGetSymFromAddr ( (HANDLE)GetCurrentProcessId () ,

g_stFrame.AddrPC.Offset , 

sdwDisp , 

pSym )) 

{

iCurr += wsprintf ( g_szBuff + iCurr, _T ( ", ")); 

// Копировать не больше символьной информации, чем 

// позволяет память. 

dwTeitip = Istrlen ( pSym->Name) ;

 if ( dwTeitip > (DWORD) ( BUFF_SIZE - iCurr _

 ( MAX_SYM_SIZE + 50)))

 {

Istrcpyn ( g_szBuff + iCurr ,

 pSym->Name , 

BUFF_SIZE - iCurr - 1 );

 // Теперь можно выйти 

szRet = g_szBuff;

_leave;

 }

else 

{

if ( dwDisp > 0)

 {

iCurr += wsprintf ( g_szBuff + iCurr , 

_T( "%s()+%04d byte(s)"), 

pSym->Name , 

dwDisp ) ;

 }

else 

{

iCurr += wsprintf ( g_szBuff + iCurr,

 _T ( "%s") 

pSym->Name ) ; 

}

 } 

}

else 

{

// Если символ не был найден, то исходный файл и номер 

// строки тоже не будут найдены, поэтому выйти сейчас.

 szRet = g_szBuff;

_leave; 

}

ASSERT ( iCurr < ( BUFF_SIZE - MAX_PATH)); 




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



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