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


Условии или в данных. Если же


на вкладке Data диалогового окна Breakpoints) фактические адреса выражений и данных. В программе AdvancedBP, показанной в листинге 5-1, требовалось установить точку прерывания глобального выражения, которая должна срабатывать, если "первый символ в имени глобальной переменной g_szGiobai изменится на "G". Для этого пришлось найти адрес переменной g_szciobai (он оказался равным 0x00404594) и установить (в поле Enter the expression to be evaluated на вкладке Data диалогового окна Breakpoints) точку прерывания выражения в формате:

Mchar*) Ox00404594='G'

Однако при пошаговом просмотре каждой инструкции будет показано неправильное выражение:

WO (0x00404594) =='G'

Мне так и не удалось найти подходящей точки прерывания глобального выражения, потому что очень трудно подыскать такое выражение, которое примет отладчик. Намного удобнее в этом случае воспользоваться точкой прерывания глобальной переменной.

/*00З*/ ttinclude <windows.h>

/*004*/ void LocBPFunc ( void)

/*005*/ { // {,AdvancedBP.cpp,}.6

/*006V printf ( "Hello from LocBPFuncW) ;

/*007*/ }

/*008*/ void SkipLocBPFunc ( void)

/*009*/ { // {,AdvancedBP.cpp,}.12 skip 99 times(s)

/*010*/ for ( int i = 0; i < 100; i++)

/*011*/ {

/*012*/ printf ( "SkipLocBPFunc iteration = %d\n", i);

/*013*/ }

/*014*/ }

/*015*/ void ExprTrueLocBP ( void)

/*016*/ { // {,AdvancedBP.cpp, } .20 when 'j=8'

/*017*/ int j = 0;

/*018*/ for ( int i = 0; i < 10; i++)

/*019*/ {

/*020*/ j = i * 2;

/*021*/ }

/*022*/ }

/*023*/ void DataChangeLocBP ( void)

/*024*/.{ // {,AdvancedBP.cpp,}.26 когда изменяется szBuff[5](length:1)

/*025*/ char szBuff[ 10 ];

/*026*/ strcpy ( szBuff, "String!");

/*027*/ }

/*028*/ char g_szGlobal[ 10 ];

/*029*/ int g_ilnt = 0;

/*030*/ void main ( void)

/*031*/ { // 0x401210 -> ТП-адрес точки входа в jmainCRTStartup

/*032*/ LocBPFunc ();

/*0ЗЗ*/ SkipLocBPFunc ();

/*034*/ ExprTrueLocBP ();

/*035*/ DataChangeLocBP ();

/*036*/

/*037*/ //{,,KERNEL32.DLL}_LoadLibraryA@4 <- с отладочными символами




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



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