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


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


 // подходящее смещение, я возвращаюсь назад на 100 байт.

 DWORD dwTempDis = 0;

while ( FALSE == ::SymGetLineFromAddr ( m_hProcess ,

dwAddr — dwTempDis ,

 pdwDisplacement , 

Line ) ) 

}

dwTempDis += 1;

if ( 100 == dwTempDis)

{

return ( FALSE); 

}

}

if (0 != dwTempDis)

 {

*pdwDisplacement = dwTempDis; 

}

return { TRUE);

#endif // DO_NOT_WORK_AROUND_SRCLINE_BUG 

}

BOOL SymGetLineFromName ( IN LPSTR ModuleName ,

IN LPSTR FileName ,

 IN DWORD dwLineNumber ,

 OUT PLONG plDisplacement , 

IN OUT PIMAGEHLP_LINE Line ) 

{

return ( ::SymGetLineFromName ( m_hProcess ,

ModuleName , 

FileName , 

dwLineNumber ,

plDisplacement , 

Line ) ) ; 

}

BOOL SymGetLineNext ( IN OUT PIMAGEHLP_LINE Line) 

{

return ( ::SymGetLineNext ( m_hProcess, Line)); 

}

BOOL SymGetLinePrev ( IN OUT PIMAGEHLP_LINE Line) 

{

return ( ::SymGetLinePrev ( m_hProcess, Line));

 }

BOOL SymMatchFileName ( IN LPSTR FileName ,

IN LPSTR Match , 

OUT LPSTR * FileNameStop ,

 OUT LPSTR * MatchStop ) 

{

return ( ::SymMatchFileName ( FileName ,

Match , 

FileNameStop , 

MatchStop ));

 } 

/*- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -

Разные public-члены

- - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - -*/

public :

LPVOID SymFunctionTableAccess ( DWORD AddrBase)

 {

return ( ::SymFunctionTableAccess ( m_hProcess, AddrBase)); 

}

BOOL SymGetSearchPath ( OUT LPSTR SearchPath ,

IN DWORD SearchPathLength ) 

{

return ( ::SymGetSearchPath ( m_hProcess ,

SearchPath , 

SearchPathLength )); 

}

BOOL SymSetSearchPath ( IN LPSTR SearchPath) 

{

return ( ::SymSetSearchPath ( m_hProcess, SearchPath)); 

BOOL SymRegisterCallback ( IN PSYMBOL_REGISTERED_CALLBACK

CallbackFunction,

IN PVOID UserContext ) 

{

return ( ::SymRegisterCallback ( m_hProcess ,




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



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