c ++ - Fejlfinding Windows-service bygget med mingw/msys2

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en hel del tid til at fejle et crash i en Windows Service, som jeg har bygget med QT og Boost Logger på Windows ved hjælp af MSYS2-miljø. Hovedproblemet kommer virkelig, når jeg stopper programmet lige før exit. Programmet eksisterer bare ikke med succes og kaster en af ​​disse dårlige drenge:


Windows crack information [3]


Hvis jeg kørte det i gdb, kan det være en anden historie. Jeg åbner crash dump i windbg og får nogle oplysninger, men da symbolerne ikke eksporteres er det virkelig kryptisk.


WinDBG image [4]


Jeg ser nogle problemer, når mit program (kaldet service) ringer loggen. Men jeg kan ikke gøre meget her i vejen for hvor eller hvad. Hvordan kan jeg få noget nyttigt, så jeg endelig kunne løse dette problem?


Tusind tak!

Bedste reference


Det lader til, at den nemmeste og mest naturlige måde var at vedhæfte gdb til løbeprocessen. Jeg kørte simpelthen msys2 som administrator og kørte derefter kommandoen


gdb service.exe -p [processID]


Task manager gav mig proces ID. Så snart processen blev vedhæftet, brugte jeg bare kommandoen


continue


for at få det til at fortsætte med at køre. Så lader jeg det gå ned og gdb gav mig backtrace perfekt.


Jeg har søgt lidt for dette, og det var meget enklere end at prøve at få windbg til at læse symbolerne genereret af g ++ eller læse samlingskoden. Håber det hjælper nogen, der har det samme problem.


Referencer:


Sådan vedhæftes en proces i gdb