Някой има ли предложения или уроци за създаване на доклади за сривове на програма? Искам да започна да изпращам на хората игра, която разработвам, но ако играта се срине поради обработка на грешки, искам да видя тези отчети на имейл адрес, който съм регистрирал (заедно с данните, събрани от програмата). Някой знае ли как се прави това?
Създаване и изпращане на отчет за срив [затворен]
Отговори (5)
АКО използвате Visual Studio 2010, можете да използвате вграденото отчитане на грешки. След това можете да се регистрирате в Microsoft, вижте http://msdn.microsoft.com/en-us/isv/bb190483
Най-простият начин да направите доклад за срив е да имате оператори try-catch във вашия код. Когато възникне изключение, вие създавате временен регистрационен файл, включващ типа изключение, класа на изходния код, функцията и реда, където е настъпил сривът, и данните на глобалните и локалните променливи/контейнери, някои от които трябва да включват въведените от потребителя данни.
Вие не изпращате регистъра на грешките по имейл, но вашата програма отваря порт и изпраща данните до сървър, който слуша непрекъснато предварително зададен порт за доклади за грешки.
По-разширените отчети за грешки могат да включват дъмп на паметта и стойностите на регистрите. За да прочетете стойностите на паметта по бърз и мръсен начин е да използвате указател, който ще прочете итеративно стойностите на областта на стека. За стойностите на регистъра можете да използвате ключовата дума asm
.
Можете да използвате функцията MiniDumpWriteDump от Помощна библиотека за отстраняване на грешки за създаване на dump файл с дъмповете на стека от всяка нишка. Вярвам, че след това можете да отворите файла във Visual Studio и да го видите в програмата за отстраняване на грешки (или близо до това).
Има добър примерен код в блога на Maciej Sinilo (той също е програмист на игри). Кодът включва как да получите информация от срива (напр. дали е невалидно четене или запис) и стека за извикване или минисметката. Това беше достатъчно, за да започна да добавям манипулатор на сривове към нашата система за тестване.
Надявам се това да помогне.
ако искате някакъв вид докладване за грешки извън кутията чрез интернет, трябва да разгледате EQATEC анализ
който има наличен C++ интерфейс.