Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]debug remoto

    ciao.
    Ho un problema con un applicazione , nel mio pc funziona perfettamente , mentre su quello di un utente no.
    Sparo , è possibile debuggare il programma sul pc dell' utente tramite ad es desktop remoto o carbon copy o uno di questo genere di programmi e vs 2008?
    In alternativa , cosa mi consigliate ? un logging per es? in questo caso dovrei getire le eccezioni , cosa che non ho mai fatto in c++(si , mi vergogno un po), come potrei procedere se non conosco il tipo di eccezione generata?
    Mi consigliate una libreria per il log?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non funziona, in che senso? Hai degli errori?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da giuseppe500
    ciao.
    Ho un problema con un applicazione , nel mio pc funziona perfettamente , mentre su quello di un utente no.
    Sparo , è possibile debuggare il programma sul pc dell' utente tramite ad es desktop remoto o carbon copy o uno di questo genere di programmi e vs 2008?
    C'è di meglio.
    http://msdn.microsoft.com/en-us/library/bt727f1t.aspx
    In alternativa , cosa mi consigliate ? un logging per es? in questo caso dovrei getire le eccezioni , cosa che non ho mai fatto in c++(si , mi vergogno un po),

    come potrei procedere se non conosco il tipo di eccezione generata?
    In generale tutte le tue eccezioni dovrebbero derivare da std::exception, per cui puoi usare un blocco quasi-catchall (catch (exception & ex)) a livello di entrypoint per gestire tutte le eccezioni altrimenti non gestite, loggarne il messaggio e terminare.
    codice:
    int WinMain(...)
    {
        try
        {
            /* ... */
        }
        catch(exception & ex)
        {
            /* qui logga/mostra ciò che restituisce ex.what() ed eventualmente il tipo dell'eccezione usando RTTI */
        }
        return ...;
    }
    Non sperare nemmeno di continuare l'esecuzione, a livello di handler globale puoi fare poco più che loggare l'eccezione e uscire, dato che non sai di che strutture dati usate dal programma poterti fidare.
    Un'altra cosa importante: non usare DWORD o altri interi invece di classi per le eccezioni, in versioni più vecchie di VC++ rischi di catturare anche le eccezioni SEH, il che, se non gestito in maniera adeguata, porta a più casini che altro.
    Alla stessa maniera, evita nella maniera più assoluta i catchall (catch(...)), anche qui per via di SEH rischi di fare più danni che altro.
    Mi consigliate una libreria per il log?
    grazie.
    Leggevo giusto di recente questa domanda, dacci un'occhiata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ma devo attivare qualcosa nelle proprietà del progetto per abilitare la gestione delle eccezioni?
    ad es la divisione x 0?o altro?
    grazie.

  5. #5
    Originariamente inviato da giuseppe500
    ma devo attivare qualcosa nelle proprietà del progetto per abilitare la gestione delle eccezioni?
    Il flag del compilatore è /EHs, ma dovrebbe essere attivato di suo.
    ad es la divisione x 0?o altro?
    grazie.
    La divisione per zero è un altro paio di maniche; non c'entra con le eccezioni C++ (che sono sollevate solo esplicitamente dal tuo codice e dal codice di libreria tramite throw - con l'eccezione di bad_exception), lo standard C++ lo da come comportamento non definito e su Windows viene sollevata un'eccezione SEH che si può gestire con blocchi __try ... __except (ma occhio che è roba non standard e con le eccezioni SEH si rischia facilmente di fare casino).
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ultima cosa:
    ho un problema con un applicazione che da errore nell ' inizializzazione , quindi non posso attaccarmi al processo perchè appena lancio l'eseguibile sul computer remoto mi va in crash.
    come posso procedere?
    non ho dialoghi, è un applicazione opengl.
    pensavo a qualcosa tipo ciclo infinito prima di partire ....
    non so mi aiutate?

  7. #7
    Parli di inizializzazione interna alla tua applicazione o intendi l'inizializzazione fatta dal loader? Nel senso, va in crash "normale" o dà l'errore "impossibile inizializzare l'applicazione" o roba del genere?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    no , va in crash normale.
    penso di aver risolto , nel programma aspetto che l'utente prema un tasto e dopo inizio il debug remoto.
    Quando lancio l'applicazione nel computer remoto si avvia e , compare nella lista dei programmi del pc remoto,a quel punto dal mio computer mi "aggancio" all applicazione , poi dico all utente remoto di premere un tasto e inizio il debug.
    sembra funzionare , ma l'ho provato solo sul mio pc .

  9. #9
    Ho fatto anch'io una roba del genere una volta e funzionava.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Il debug remoto è sempre un pugno nello stomaco.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.