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


Основные моменты реализации - часть 4


pImage->GetLoadAddress(),

 iIndex ) ) 

{

sMsg.FormatMessage

( IDS_DUPLICATELOADADDRFINAL,

p!mage->GetFullName () ,

((CBinaryImage*)m_cDataArray[iIndex])->GetFullName());

 AfxMessageBox ( sMsg);

// Данные в pImage неправильные, поэтому

 // двигаемся дальше и выходим из цикла. 

bValid = FALSE; 

break;

 }

}

else 

{

// Данные в plmage неправильные, поэтому

 // двигаемся дальше и выходим из цикла.

 bValid = FALSE; 

break; 

}

if ( TRUE = bValid) 

{

// Этот образ хорош (по крайней мере, по отношению

 //к загруженным символам).

 iState = STATE_VALIDATED;

 } 

else

{

iState = STATE_NOTVALID;

}

 }

else 

{

// Этот образ неправильный.

iState = STATE_NOTVALID;

 }

if ( STATE_VALIDATED = iState)

{

// Попытка загрузить этот образ в символьную машину.

bRet =

m_cSymEng.SymLoadModule(NULL ,

(PSTR)(LPCSTR)pImage->GetFullName(), 

 NULL

pImage->GetLoadAddress () , 

0 );

// Наблюдение закончено. SymLoadModule возвращает адрес загрузки

 // образа, неравный TRUE. 

ASSERT ( FALSE != bRet);

 if ( FALSE == bRet) 

{

TRACE ( "m_cSymEng.SymLoadModule failed!!\n"); 

iState = STATE_NOTVALID; 

}

else

 {

iState ь STATE_VALIDATED; 

}

 }

// Установить значение "Extra Data" для plmage в состояние загрузки

 // отладочных символов i

f ( STATEJVALIDATED == iState)

 {

pImage->SetExtraData ( TRUE); 

}

else 

{

pImage->SetExtraData ( FALSE);

 }

// Поместить этот элемент в массив.

 m_cDataArray.Add ( plmage);

// Добавлен ли элемент модификации документа?

 if ( TRUE == bModifiesDoc) 

{

SetModifiedFlag (); 

}

CCrashFinderApp * pApp = (CCrashFinderApp*)AfxGetApp (); 

ASSERT ( NULL != pApp);

// Поместить строку в дерево.

 HTREEITEM hltem =




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



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