Debugger



  • Hallo,

    ich arbeite gerade an einer multithreaded application mit der winapi und verwende den Visual Studio 6 Debugger unter Windows XP.

    Sobald ich mein Programm mit dem Debugger starte bricht mein ganzes System zusammmen. Meistens hilft nur mehr ein reboot.

    Kann mir jemand helfen

    Gerhard



  • ja, du hast gemacht:

    int threadcount;
    while(threadcount<10)
      CreateThread(...);
    

    im release-modus wird threadcount mit 0 anfangen. im debug-modus aber mit -850 millionen. deshalb hat der die das system so mit threads voll, dass es abkackt.

    (uih, da hat vh aber wiedermal geraten.)



  • ups, war mit oder ohne debugger, nicht im debug- oder release-modus. nee, dann seh ich keinen ansatzpunkt.



  • Ich würde eher sagen, das in der folgenden Stelle

    if (!GetNumberOfEventLogRecords(h, &cRecords))
        {
            MessageBox(NULL, "Could not get the number of records.", "Fehler", 
                MB_OK|MB_ICONEXCLAMATION);
            CloseEventLog (h);
            return;
        }
    
        while (ReadEventLog(h,                // event log handle 
            EVENTLOG_FORWARDS_READ |  // reads forward 
            EVENTLOG_SEQUENTIAL_READ, // sequential read 
            0,            // ignored for sequential reads 
            pevlr,        // pointer to buffer 
            BUFFER_SIZE,  // size of buffer 
            &dwRead,      // number of bytes read 
            &dwNeeded))   // bytes in next record 
        {
            while (dwRead > 0) 
            { 
                // Print the record number, event identifier, type, 
                // and source name. 
    
                /*printf("%02d  Event ID: 0x%08X ", 
                dwThisRecord++, pevlr->EventID); 
                printf("EventType: %d Source: %s\n", 
                pevlr->EventType, (LPSTR) ((LPBYTE) pevlr + 
                sizeof(EVENTLOGRECORD))); */
                strcpy(szSourceName, (LPSTR)((LPBYTE) pevlr + sizeof(EVENTLOGRECORD)));
                dwRead -= pevlr->Length; 
                pevlr = (EVENTLOGRECORD *)((LPBYTE) pevlr + pevlr->Length); 
            } 
    
            pevlr = (EVENTLOGRECORD *) &bBuffer; 
        } 
        CloseEventLog(h);
    

    der Fehler liegt....

    Oder ist meine Glaskugel beschlagen???



  • Danke für den Tipp, Event logs verwende ich allerdings nicht.

    lg, Gerhard



  • Wie wäre es denn, wenn Du mal CODE postest???

    Die Anzahl der Helfer wird geradezu explosionsartig ansteigen, sobald man weiß, was Du vorhast...



  • aber ohne code ist das rätseln viel anspruchsvoller. außerdem wird man nicht von seinen überlegungen abgelenkt.
    aber bald könnte ne lösung kommen, würde gerne sehen, wie dicht ich dran war.



  • Ich glaube dieses Problem ist code unabhängig, deshalb habe ich auch nichts gepostet. Ich wüsste auch nicht welchen Teil meines codes ich posten sollte, da dies immer und überall passiert, unabhängig davon, wo ich meine breakpoints setze.

    Ich befürchte eher, es handelt sich um ein Problem von Win XP (home) in Verbindung mit Visual Studio 6. In einem msdn Forum wurde auch ähnliches berichtet, allerding konnte ich noch nirgend wo eine Lösung finden.

    Ich dachte vielleicht is hier schon jemand über selbiges gestolpert.

    Trotzdem danke für die Tipps.

    Gerhard


Anmelden zum Antworten