Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

pdf file....το κρατω ή το διαγραφω στη διανομή;

Îåêßíçóå áðü ôï ìÝëïò tsomos. Τελευταία δημοσίευση από το μέλος tsomos στις 23-12-2009, 15:17. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-12-2009, 13:07 56049

    pdf file....το κρατω ή το διαγραφω στη διανομή;

    Για χαρα σε ολους,

    θέλω να κάνω distribution μια εφαρμογή και βλέπω οτι εκτός απο το myApp.exe, υπάρχει και το myApp.pdb(program debug database). Στα Properties->Compile->Advanced Compile Options οι ρυθμίσεις στο debug ειναι: ναι στο tick για Enable Optimazations και Define Trace Constants με επιλογή 'pdf-only'. Ειμαστε οκ εδω; Σημαίνει κάτι το ιδιαίτερο αυτό;
    Τώρα, επειδή το έχω pdp-only, δημιουργεί και το αρχείο myApp.pdb και το ερώτημα ειναι: το χρειάζομαι αυτο το αρχείο για τη διανομή ή να το σβήσω; Μήπως το pdb βοηθάει στο να πει που(Line) 'χτύπησε' και με ποιο μήμυνα λάθους η εφαρμογή; Δηλαδή επειδή είναι program debug database μήπως αν δεν το διανέμω αν 'χτυπήσει' κάτι να μην έχω πληροφορίες σχετικά με το 'χτύπημα';
    Αν ναι το χρειάζομαι άρα να το διανέμω και αυτο;
    Σε κάθε περίπτωση για ποιον λόγο δεν πρέπει να διανέμω το pdb; Υπάρχει κάποιος 'κίνδυνος' απο τη διανομή του ή το μόνο κακό που κάνει έιναι να καταλαβάνει λίγο ακόμα χώρο;

    Ευχαριστώ πολύ
  •  23-12-2009, 14:06 56051 σε απάντηση της 56049

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    Καταρχήν, δεν πρέπει ποτέ να διανέμεις τα debug builds γιατί έχουν απενεργοποιημένα τα διάφορα optimizations με αποτέλεσμα το τελικό executable και μεγαλύτερο να είναι και σημαντικά αργότερο. Ναι μεν, αν ο τελικός χρήστης έχει εγκατεστημένο κάποιο debugger το pdb θα του πει σε ποιό σημείο έσκασε μία εφαρμογή, δεν σου λέει όμως γιατί έσκασε, πως κλήθηκε το function στο οποίο έσκασε, τί έκανε ο χρήστης και πολλά άλλα.

    Επίσης, δεν προστατεύει την εφαρμογή από το σκάσιμο και το χρήστη από την απώλεια δεδομένων. Αυτά τα πετυχαίνεις με ένα σωστά σχεδιασμένο exception handling και logging. Τα TargetSite και StackTrace ενός exception σου λένε πού έγινε το exception και ποιές μέθοδοι εκτελέστηκαν μέχρι να φτάσεις εκεί που έσκασε ο κώδικας.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  23-12-2009, 14:25 56052 σε απάντηση της 56049

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    Οι εν λόγω επιλογές στο συγκεκριμένο τμήμα είναι : pdbonly που δημιουργεί μόνο τα αρχεία pdb, full που παράγει debuggable code (χρήσιμο σε debugging configurations) και none.

    Επειδή το αρχείο αυτό χρησιμεύει μόνο στον debugger πολλοί θα σου πουν να το σβήσεις.Όμως έχεις αρκετούς λόγους να το κρατήσεις και να το κάνεις deploy με την εφαρμογή σου.Και αυτό διότι χάρην σε αυτά τα αρχεία είναι δυνατό το debugging και στην release έκδοση.Έτσι π.χ αν ο πελάτης σου έχει ένα επαναλαμβανόμενο πρόβλημα στην εφαρμογή σου,αν έχεις κάνει deploy το pdb αρχείο και κάνεις χρήση ενός remote debugger,μπορείς να δεις το πρόβλημα απευθείας από την εφαρμογή όταν τρέχει live,πράγμα υπερπολύτιμο.Αν σε τέτοια σενάρια δεν είχες διανείμει το pdb,δεν μπορούσες να κάνεις τίποτα παρόμοιο μια που το pdb αρχείο πρέπει αυστηρά να έχει το ίδιο build version με την εφαρμογή που τεστάρεις.Αναγκαστικά λοιπόν θα επέστρεφες στο debug configuration,χάνοντας το πλεονέκτημα να δεις τι συμβαίνει όταν ο πελάτης σου τρέχει το πρόγραμμα στο δικό του περιβάλλον.

    Όσον αφορά την ασφάλεια,αν κάποιος έχει πρόσβαση στο αρχείο αυτό πράγματι μπορεί δυνητικά να αποκτήσει επιπλέον πληροφορίες για την εφαρμογή σου.Αν όμως έχει πρόσβαση σε αυτό το αρχείο 99% είχε ήδη αποκτήσει πρόσβαση και σε όλα τα άλλα αρχεία,πράγμα που απλά σημαίνει ότι η εφαρμογή σου δεν ήταν ασφαλής εξ'αρχής.

    Ως συμπέρασμα το αρχείο αυτό να το διανείμεις οπωσδήποτε,ακόμα και αν τις περισσότερες φορές μοιάζει απλά να μεγαλώνει το μέγεθος του deployment.Άλλωστε η παραγωγή pdb αρχείων και σε release configurations είναι on by default από το VS 2005 και μετά,ακριβώς επειδή είναι καλή ιδέα να συμβαίνει αυτό.

  •  23-12-2009, 15:06 56053 σε απάντηση της 56051

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    Να ρωτησω κατι αλλο. Οκ, εχει μεσα τα Try...Catch και με ενδιαφερει να παιρνω απο εκει τις πληροφοριες του σφαλματος. Αν δεν δωσω το pdb τοτε θα συνεχίσω να παιρνω τις πληροφοριες που εχει το catch ασχετα απο το αν υπαρχει το Pdb ή όχι, σωστα; Δηλαδη αν γινει ενα σλαφμα 'Interger divide by zero' και δεν εχω το Pdb θα ξερω οτι αυτο εγινε για παραδειγμα στην γραμμη 678 και θα εχω το κειμενο του σφαλματος 'Interger divide by zero'; Δε με ενδιαφερει να βαλω τον χρηστη να κανει debug ή να το κάνω remote αυτο, απλα με ενδιαφέρει αν το catch θα μου βγάλει αυτά που πρέπει να μου βγάλει(γραμμή και κείμενο) και μου βγάζει και όταν το τρέχω μέσα απο το VS. Επισης δε με ενδιαφερει αν θα ξερω πως κληθηκε με τι παραμετρους κλπ....
    Και στο κατω κατω αν τα βρω τοσο σκουρα, κατεξαιρεση μπορω να του δωσω το pdb του ΙΔΙΟΥ ομως build για να δω τι παιζει...σωστα;
  •  23-12-2009, 15:09 56054 σε απάντηση της 56053

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    Το αρχείο pdb το χρησιμοποιεί ο debugger σου,όχι η εφαρμογή σου.Δεν επηρεάζει η παρουσία ή μη του αρχείου με κανένα τρόπο τον κώδικα της εφαρμογής σου.Τα exceptions θα τα χειρίζεται κανονικά.
  •  23-12-2009, 15:13 56055 σε απάντηση της 56053

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    tsomos:

    Και στο κατω κατω αν τα βρω τοσο σκουρα, κατεξαιρεση μπορω να του δωσω το pdb του ΙΔΙΟΥ ομως build για να δω τι παιζει...σωστα;

    ΑΝ το έχεις σώσει και είναι ίδια έκδοση με την εφαρμογή του,ναι.Αν έχεις κάνει έστω ένα build παραπάνω από την έκδοση του πελάτη σου το pdb αρχείο θα σου είναι άχρηστο για αυτό το ρόλο.

  •  23-12-2009, 15:17 56056 σε απάντηση της 56054

    Απ: pdf file....το κρατω ή το διαγραφω στη διανομή;

    ευχαριστω πολυ για τις απαντησεις σας Big Smile τελικα δεν θα το διανειμω
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems