Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24

    [VC Visual STUDIO 2005] Errore con avvio senza debug

    Ciao ragazzi,
    ho un problema quando tento di avviare la mia applicazione senza eseguire il debug (ma non ancora in modalità release). Visual studio mi dice: "An unhandled win32 exception occurred...". Premetto che in modalità debug funziona benissimo. Come mai?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Senza conoscere il codice è molto difficile sapere il perchè.. eppoi l'errore è troppo generico.. provca a controllare lo stack trace dell'errore che viene fuori se cerchi i dettagli dell'errore..

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    Facendo un pò di test ho notato che questa eccezione è generata in fase di uscita dell'applicazione. E' un'applicazione basata su finestra di dialogo. Quando a fine esecuzione, la chiudo (usando il controllo con la X, per intenderci) mi genera questa eccezione. Come faccio a controllare lo stack trace dell'errore?
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    bè in teoria la finestra dell'errore dovrebbe avere una scritta dettagli o un bottone non ricordo che apre la finestra dello stack trace..

    cmq se è li controlla che non sia qualche puntatore o qualche oggetto che magari viene doppiamente deallocato o che è nullo ecc... Fai qualcosa alla chiusura? Se hai classi tue hai ridefinito il distruttore? se si controlla la sua esecuzione..

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    Allora ho individuato il punto in cui il programma genera l'eccezione, ma di fatto non ho capito perchè la genera. E' in corrispondenza della chiamata ad una funzione all'interno di un'altra funzione. Solo che mi sembra tutto ok. In ogni caso, perchè mi dà problemi solo quando non eseguo il debug? Non esiste qualche comando per liberare la memoria all'uscita del programma stesso? Ti allego in basso il codice della funzione incriminata, tieni presente che utilizzo delle chiamate a DLL esterne.
    codice:
    double* CSRDlg::Classify(void)
    
    {
    const int numWeights=12;
    
    //Parser per recupero input per il classificatore
    char genericRow[3000];
    
    FILE* FileIn;
    fopen_s(&FileIn,"C:\\Documents and Settings\\ruggierd\\Desktop\\NN\\Esercizi\\Esperimenti\\Speech recognition\\Speech recognizer\\DLL\\Features extractor\\FEWeights.nsw","r");
    
    if(FileIn == NULL)
    	{
    		MessageBox("Errore nel leggere il file di input per il classificatore!\n");
    		exit(1);  
    	}
    int counterRow=0;
    int cardFullSynapse;
    const int cardWeights=12;
    double *weightsDouble = new double[cardWeights];
    const int numOutClassifier=2;
    double *outputData=new double[numOutClassifier];
    
    //Lettura righe
    while(counterRow < 12)
    {
       counterRow+=1;
       fgets(genericRow,3000,FileIn);
    }
    fscanf_s( FileIn, "%d\n", &cardFullSynapse);
    for (int k = 0; k < cardWeights; k++)
    {
    	fscanf_s( FileIn, "%lf\n", &weightsDouble[k]);
    }
    //Parser per recupero pesi
    fclose(FileIn);	
    
    enum {NSRecallNetwork, NSLearningNetwork};
    	HINSTANCE hDLL = LoadDLLFunctions("C:\\Documents and Settings\\ruggierd\\Desktop\\NN\\Esercizi\\Esperimenti\\Speech recognition\\Speech recognizer\\DLL\\classifier\\CLASSIFICATORE1WITHSOFTMAX.dll");
    if (hDLL)
    
    {
         	
    void *nnClassificatore;
    int CreateNet=createNetwork(nnClassificatore, NSLearningNetwork); 
    if (!CreateNet)
    	loadWeights(nnClassificatore, "C:\\Documents and Settings\\ruggierd\\Desktop\\NN\\Esercizi\\Esperimenti\\Speech recognition\\Speech recognizer\\DLL\\classifier\\Classificatore1withSoftmax.nsw");
    
    // Avvio classificatore
    
    int classifierResponse=getResponse(nnClassificatore, numWeights, weightsDouble, outputData); // Questa è la chiamata che genera l'eccezione!!!!!!!!
    	/*if (classifierResponse)
    		{
    		printf ("\nClassifier Network response error\n");
    		exit(1);
    		}*/
    
    delete weightsDouble;
    destroyNetwork(nnClassificatore);
    FreeLibrary(hDLL);
    
    return outputData;
    }
    
    else
    	MessageBox("\nERROR LOADING DLL Classificatore");
    
    return 0;
    
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    Sono riuscito ad isolare l'eccezione generata. In realtà ho capito che è generata anche in modalità debug solo che non me ne accorgevo poichè non avevo nessun warning evidente. Ecco il testo dell'eccezione:Eccezione first-chance a 0x7c91b3fb in SR.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0x3feffffc.
    Spiegatemi come devo risolverla per favore.
    Grazie.

  7. #7
    Su che riga viene sollevata l'eccezione?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    sicuramente un puntatore dereferenziato male, deallocato male et simila..

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    24
    La riga in cui credo si genera l'eccezione è legata alla chiamata della funzione:
    codice:
    int classifierResponse=getResponse(nnClassificatore, numWeights, weightsDouble, outputData);
    Infatti se non eseguo questa chiamata non ho problemi.
    Cosa può mai essere? Se è un problema di puntatori come posso risolverlo?
    Help

  10. #10
    nnClassificatore è un puntatore non inizializzato, credo che il problema stia lì.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.