Отдалечено отстраняване на грешки - Графика на Windows с DirectDraw

За да извършите отдалечено отстраняване на грешки, ще ви трябват два компютъра, свързани към локална мрежа. Конкретните мрежови настройки (брой възли, тип кабел, мрежови адаптери и т.н.) са без значение; основното е, че TCP / IP мрежовият протокол е инсталиран и на двата компютъра. Освен това Visual C++ трябва да бъде инсталиран и на двата компютъра.

След това трябва да изберете коя машина ще изпълнява дебъгера на Visual C++ и коя машина ще изпълнява приложението. Ще наричаме компютъра, работещ с Visual C++, като хост компютър (или хост), а компютърът, изпълняващ приложението, което отстраняваме, като отдалечен компютър. Обикновено по-мощният от двата компютъра се определя като хост.

Ориз. А.1. Помощна програма Winipcfg

След това ще ви трябва директория на отдалечената машина, където вашето приложение ще се съхранява и изпълнява. Можете да му дадете произволно име и да го поставите навсякъде на вашия твърд диск, но на практика се оказва по-удобно да поставите тази директория по-близо до корена. Не е необходимо да копирате изпълнимия файл на приложението (това ще стане автоматично), но трябва да прехвърлите всички файлове с данни, необходими за работата му. Всъщност изпълнимият файл може да бъде прехвърлен поне за целите на тестването. За да работи правилно отстраняването на грешки, работещото приложение трябва да намери всичките си файлове с данни (освен когато отстранявате грешки в поведението на програма, когато файловете с данни липсват).

Ориз. А.2. Диалогов прозорец за идентификация на мрежата

След като създадете директория за приложението и проверите дали то може да работи на отдалечения компютър, стартирайте Visual C++ Debug Monitor ( MSVCMON.EXE ). Няма пряк път за тази програма, както и за помощната програма Winipcfg, така че ще трябва да създадете сами. Мониторът за отстраняване на грешки е включенbin директория на Visual C++. Ако ще правите много отдалечено отстраняване на грешки, вероятно трябва да поставите прекия път на монитора за отстраняване на грешки на удобно място. Прозорецът на монитора за отстраняване на грешки на Visual C++ е показан на фиг. А.3.

Ориз. А.3. Диалогов прозорец за монитор за отстраняване на грешки на Visual C++

Ориз. А.4. Диалогов прозорец за мрежови настройки

Сега нека настроим хоста. Стартирайте Visual C++ и заредете проекта, който ще отстраните. Нашият пример използва проект с име Sample. Изпълнете командата ProjectSettings и отидете в раздела Общи. Той указва директорията, в която се генерира крайният изпълним файл. За да опростим отстраняването на грешки, ние ще го генерираме директно на отдалечения компютър - това ще ни спести от необходимостта да копираме отново изпълнимия файл на отдалечения компютър след следващата компилация. В полето Изходни файлове въведете името на директорията, която сте създали по-рано на отдалечения компютър. Името започва с конвенцията за мрежов файл (\\). На фиг. A.5 показва как изглежда полето Изходни файлове с посочената директория.

Посоченият от вас низ започва с името на отдалечената машина ( remotemachine ), последвано от името на устройството (в нашия пример отдалечената директория за отстраняване на грешки е на устройство C) и името на директорията. Отидете в раздела Отстраняване на грешки; тук трябва да промените и трите полета. Трябва да посочите местоположението на целевия изпълним файл и работната директория. На фиг. A.6 показва как се попълват полетата на раздела Debug в нашия пример. Както на фиг. A.5, пътят до изпълнимия файл включва името на отдалечения компютър.

Преди да започнете отдалечено отстраняване на грешки, остава да направите само една стъпка. Изпълнете командата Debugger Remote Connection от менюто Build. Тази команда отваря прозорец (подобен на прозореца на монитора за отстраняване на грешки) за активиране инастройки на сесия за отдалечено отстраняване на грешки. По подразбиране списъкът с връзки е настроен на Локален. За достъп до отдалечено отстраняване на грешки изберете реда Мрежа (TCP/IP), както е показано на фигура 1. A.7.

Ориз. А.5. Полето Изходни файлове е подготвено за генериране на изпълним файл на отдалечен компютър

Ориз. А.6. Промени в раздела Debug

Ориз. A.7. Прозорец за отдалечена връзка

Сега можете да стартирате програмата за отстраняване на грешки. За съжаление, настройката все още не е завършена, тъй като програмата за отстраняване на грешки ще изисква да намерите всички DLL файлове, използвани от отдалеченото приложение. За щастие, това трябва да се направи само веднъж.

Стартирайте дебъгера. Ако всички параметри са конфигурирани правилно, прозорецът Debug Monitor на отдалечения компютър ще изчезне - това показва, че връзката е установена.

Отдалеченият компютър ще се опита да стартира програмата и ще бъдете подканени (на хост компютъра) за местоположението на необходимите DLL файлове. За всяка DLL се отваря прозорец за намиране на локален модул. Трябва да въведете име на файл, включително мрежовото име на компютъра. Прозорецът Намиране на локален модул е ​​показан на фиг. A.8 (предлага да се посочи местоположението на файла WINMM.DLL). Част от въведения низ не се побира във фигурата, но трябва да запомните, че в допълнение към пътя трябва да посочите името на файла.

Ориз. А.8. Намерете прозореца за локален модул

След като посочите местоположението на всички DLL файлове (обикновено разположени в директорията windows\system), програмата се изпълнява на отдалечения компютър, но нейният изход за отстраняване на грешки се насочва към прозореца на програмата за отстраняване на грешки на хоста. Сега можете да дебъгвате вашата програма. Конфигурирахме Visual C++ така, че всеки път, когато се компилира, нов изпълним файл ще бъде автоматично копиран на отдалечената машина. Отдалеченото отстраняване на грешки е почти същото като нормалното отстраняване на грешки, с изключение на товапрограмата не работи на хоста, а на друг компютър.

Накрая ще кажа още няколко думи за отдалеченото отстраняване на грешки. Първо, как го изключвате? Добър въпрос. Изпълнете командата BuildDebugger Remote Connection в Visual C++ (на хоста), след това изберете Local в списъка Connection и щракнете върху OK.

Отдалеченото отстраняване на грешки има много предимства, но не е перфектно. На първо място, точките на прекъсване в него работят ненадеждно, ако изобщо не работят. Друг проблем е, че след като настроите отдалечено отстраняване на грешки и изберете къде да намерите DLL файловете, необходими за вашата програма, Visual C++ ще настоява да зареди DLL дори след връщане към режим на локално отстраняване на грешки. Следователно, в края на раздела за отдалечено отстраняване на грешки, трябва да говоря за това как да се върна към нормалното зареждане на DLL.

Изпълнете командата ProjectSettings и отидете на раздела Debug. Изберете Допълнителна DLL от списъка с категории. Отваря се списък с DLL файлове, които Visual C++ се опитва да зареди при отстраняване на грешки във вашата програма (независимо дали отдалеченото отстраняване на грешки е активирано или не). За да се откажете от пренасочване на DLL (няма да имате нужда от елементите в този списък за нормално отстраняване на грешки), изберете съответния ред и премахнете отметката от квадратчето в горния ляв ъгъл. Списъкът с допълнителни DLL файлове, с някои от DLL, необходими за типичните MFC приложения, е показан на Фигура 1. А.9.