Windows Service - Debuggen



  • Hi,

    ich habe mir einen windows Service gebaut, welcher auch erfoglreich startet und stoppt.

    Nun möchte ich aber den Service debuggen.
    Dazu habe ich std::cout in eine File umgebogen.
    ALs Hintergrund kurtz die Funktionsnamen:

    SERVICE_TABLE_ENTRY DispatchTable[] =
        {
            { SVCNAME, (LPSERVICE_MAIN_FUNCTION) SvcMain },
            { NULL, NULL }
        };
    

    Dabei erhalte ich beim Starten des Dienstes einen Speicherzugriffsfehler den ich aktiv herbeiführe um zu überprüfen dass der code ausgeführt wird wenn ich den dienst starte.

    typedef void (*func_t)(void);
    VOID WINAPI SvcMain( DWORD dwArgc, LPTSTR *lpszArgv )
    {
        // Register the handler function for the service
    
        func_t func=0x00000000;
    
        func();
    

    Das heißt der code wird tatsächlich ausgeführt.
    Wenn ich jetzt die standardausgabe in ein FIle umbiege:

    typedef void (*func_t)(void);
    VOID WINAPI SvcMain( DWORD dwArgc, LPTSTR *lpszArgv )
    {
        // Register the handler function for the service
    
        //func_t func=0x00000000;
    
        //func();
    
        filestr.open ("000000_SuperServiceDebug.txt");
    
        backup = std::cout.rdbuf();     // back up cout's streambuf
    
        psbuf = filestr.rdbuf();   // get file's streambuf
        std::cout.rdbuf(psbuf);         // assign streambuf to cout
    
        std::cout << "This is written to the file";
        std::cout.flush();
    

    dann kann ich die Datei 000000_SuperServiceDebug.txt nicht finden.
    Auch wenn ich den dienst 10 mal starte oder stoppe.

    Gibts da ev eine besssere lösung mit der SysInternals toolbox ??
    Woran liegt es, dass das file nicht erzeugt wird ??
    P.s. Ich schreibe in das file und ich mache ein flush nach dem schreiben.

    Gurß



  • Okay, also das File kann ich in
    C:\Windows\SysWOW64
    Finden.
    Man hat dann mit tail -fn 15 file ne gute console.

    Trotzdem freue ich mich natürlich über bessere Lösungen.

    Gruß



  • Gut, hat sich erledigt.

    Ich kann auch mit gdb zu dem Prozess attachen...


Anmelden zum Antworten