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


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


CallbackFunction , 

UserContext ));

}

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

Защищенные члены данных

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

protected :

// Уникальное значение, которое будет использоваться для этого 

// экземпляра символьной машины. Это значение не должно быть

 // значением актуального процесса, а просто — уникальным значением. 

HANDLE m_hProcess ;

};

ttendif // _SYMBOLENGINE_H

Перед появлением Windows 2000 получить рабочий вариант символьной машины, поддерживаемой фирмой Microsoft, было не так легко. Главная причина трудностей состояла в том, что символьная машина была включена в состав системного файла IMAGEHLP.DLL, который использовали многие программы. Заменить ее новым вариантом внутри загруженного системного файла было невозможно, а получить более новую версию — сложно. Теперь, когда DBGHELP.DLL больше не является системной библиотекой, ее гораздо легче обновлять. Для этого нужно просто следить, чтобы на вашей машине всегда была установлена последняя версия Platform SDK. Ее всегда можно загрузить с сайта www.microsoft.com или получить как часть подписки MSDN. Все исходные коды в этой книге ориентированы на DBGHELP.DLL, поэтому нужно следить за тем, чтобы DBGHELP.DLL была установлена и путь к ее каталогу указан в переменной окружения PATH.

Установка DBGHELP.DLL — только часть дела, ведь для того чтобы загружать символьные файлы, нужно гарантировать их доступность для символьной машины. В случае DBG-файлов символьная машина DBGHELP.DLL будет искать их в следующих местах:

  •  текущий рабочий каталог приложения, использующего DBGHELP.DLL (а не подчиненный отладчик!);
  •  переменная среды _NT_SYMBOL_PATH;
  •  переменная среды _NT_ALT_SYMBOL_PATH;
  •  переменная среды SYSTEMROOT.

Каталоги, на которые указывают переменные среды, должны быть организованы определенным образом. Например, если приложение состоит из ЕХЕ-файла и пары DLL, расположенных в каталоге C:\MyFiles, то под этим каталогом нужно создать следующую структуру подкаталогов:




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



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