c ++ - Oprettelse og afsendelse af en crash rapport

Indlæg af Hanne Mølgaard Plasc

Problem



Har nogen nogen forslag eller vejledninger til at oprette crashrapporter på et program? Jeg ønsker at begynde at sende et spil, jeg har udviklet til folk, men hvis spillet går i stykker gennem fejlhåndtering, vil jeg se disse rapporter til en e-mail-adresse, jeg har registreret (sammen med data indsamlet fra programmet). Er der nogen der ved, hvordan man gør dette?

Bedste reference


Hvis du bruger Visual Studio 2010, kan du bruge den indbyggede fejlrapportering. Du kan derefter registrere dig hos Microsoft, se http://msdn.microsoft.com/en-us/isv/bb190483[2]

Andre referencer 1


Den mest enkle måde at lave en crash-rapport på er at have try-catch-udsagn i din kode. Når der opstår en undtagelse, opretter du en midlertidig logfil, herunder undtagelsestypen, kildekodeklassen, funktionen og linjen, hvor nedbruddet skete, og dataene fra de globale og de lokale variabler/containere, hvoraf nogle skal indeholde brugerindgangen.


Du sender ikke fejllogfilen via e-mail, men dit program åbner en port og sender dataene til en server, der lytter kontinuerligt til en foruddefineret port for fejlrapporter.


Flere avancerede fejlrapporter kan indeholde et hukommelsesdump og værdierne af registre. For at læse hukommelsesværdierne er en hurtig og snavset måde at bruge en pointer, der læser iterativt værdierne for stakområdet. For registerværdierne kan du bruge asm søgeordet.

Andre referencer 2


Du kan bruge funktionen MiniDumpWriteDump fra Debug Help Library til at oprette dumpfilen med stakdumpene fra hver tråd. Jeg tror, ​​at du kan åbne filen i Visual Studio og se det debugger (eller tæt på det). [3] [4]

Andre referencer 3


Der er nogle gode eksempler på Maciej Sinilo 's blog (han er også en programprogrammer). Koden indeholder, hvordan man får information fra nedbruddet (fx var det en ugyldig læsning eller skrivning) og callstack eller minidump. nok til at få mig begyndt at tilføje en crash handler til vores test system. [5]


Håber det hjælper.

Andre referencer 4


hvis du vil have en form for fejlmeddelelse via internettet, skal du tjekke EQATEC analytics [6]


som har en C ++-grænseflade til rådighed.