Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Debug e Release: differenza

    Ciao a tutti!
    Utilizzo Visual C++ 6.0 e vorrei sapere che differenza c'è tra fare il "build" di un progetto in modalità Debug e farlo in modalità Release?
    Ho scoperto che eseguendo la mia applicazione dopo averla buildata in modalità Debug mi dava un Debug Assertion Failed, al File Wincore.cpp alla riga 879; ho cercato su MSDN e c'è proprio scritto che quel tipo di errore si verifica solo in modalità Debug infatti poi provando a buildarlo in Release ed eseguendolo questo errore non si verificava più.
    C'è qualcuno che sa spiegarmi perchè?

  2. #2
    Nella modalità Debug vengono definite una serie di opzioni del compilatore che consentono al debugger di seguire sul sorgente l'esecuzione del programma; inoltre sono abilitate un'altra serie di opzioni, come modifica e continuazione e i vari runtime checks, e l'eseguibile è linkato alla libreria di runtime di debug, che è scritta in maniera da far emergere eventuali errori logici del programma (quindi è probabile che la tua assertion failed sia dovuta ad un errore logico che viene nascosto dalla libreria di runtime di release, più performante ma meno sicura).
    Nella modalità release invece l'eseguibile di solito ha attive diverse ottimizzazioni, che impediscono al debugger di avere una corrispondenza precisa linea di assembler=>sorgente C++, ma che rendono l'esecuzione del programma più rapida oppure l'eseguibile più piccolo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Inoltre, alcune funzionalita' vengono modificate. Ad esempio, le funzioni standard di allocazione/deallocazione della memoria vengono "sostituite" in modo che la memoria allocata sia inizializzata con valori precisi che consentono di capire se viene "sporcata" della memoria contigua.

    Nella modalita' release queste situazioni non possono essere rilevate e quindi errori del genere non sono evidenziati.

    Pero', se hai avuto un errore del genere in modalita' debug, ti consiglio di dare un'occhiata al sorgente perche' hai un problema ...

    Dovresti mostrare il codice e la linea in cui si manifesta l'errore per capirci qualcosa in piu' ...

  4. #4
    Grazie a tutti per le risposte!
    Praticamente sto cercando di gestire la "navigazione" tra le varie Dialog della
    mia applicazione e questa parte di codice riguarda l'evento associato al click
    sul bottone "back" di una determianta Dialog.
    Il Debug Assertion Failed si verifica alla seconda riga:

    CSRFinalAddressDlg * FinalPage2 = GetFinalAddressInstance();
    FinalPage2->Create(FinalPage2->IDD, NULL);

    Però non riesco a capire cosa non va...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non so come funzioni la

    GetFinalAddressInstance

    ma sei sicuro che il puntatore restituito non sia NULL?

  6. #6
    Originariamente inviato da oregon
    Non so come funzioni la

    GetFinalAddressInstance
    Hai ragione non tel'ho detto
    GetFinalAddressInstance è un metodo statico per ottenere l'istanza della
    classe in questo caso della Dialog che ho chiamato FinalAddress


    ma sei sicuro che il puntatore restituito non sia NULL?
    Quando faccio il debug e arrivo su quella riga la scritta diventa rossa però
    il puntatore restituito non è null..

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi mettere a disposizione il progetto per provarlo?

  8. #8
    ti ringrazio davvero per la disponibilità ma purtroppo non posso mettere a disposizione l'intero progetto perchè è davvero enorme e per vederlo funzionare dovrei passarti anche tutte le dll e gli ActiveX che utilizza senza contare che non è un progetto mio personale, lo sto sviluppando per l'azienda in cui lavoro e non penso che abbia intenzione di renderlo open source...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ok ... capisco ...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.