DIMITRISG Δημοσ. 20 Μαΐου 2018 Δημοσ. 20 Μαΐου 2018 Έχω ένα πρόγραμμα γράψει σε qt5 python3 και κάποιες φορές σε ανύποπτο χρόνο κρασάρει. Μου βγάζει μήνυμα ότι η Python κατέρρεψε. Αλλά δεν υπάρχει backtrace Πώς μπορώ να δω τι πταίει;
Fortistis Δημοσ. 20 Μαΐου 2018 Δημοσ. 20 Μαΐου 2018 Με το συνηθισμένο debugging δεν μπορείς; Εάν όχι, γιατί;
DIMITRISG Δημοσ. 21 Μαΐου 2018 Μέλος Δημοσ. 21 Μαΐου 2018 (επεξεργασμένο) 16 ώρες πριν, Fortistis είπε Με το συνηθισμένο debugging δεν μπορείς; Εάν όχι, γιατί; Δεν ξέρω ποιο είναι το συνηθισμένο debugging Αυτό που κάνω είναι να βλέπω το traceaback της Python, αλλά στο συγκεκριμένο κρασάρισμα δεν υπάρχει. 14 ώρες πριν, mad-proffessor είπε Με το pycharm; Θα το κοιτάξω αλλά πιστεύω ότι δεν θα μου εμφανίζει κάποιο backtrace Επεξ/σία 21 Μαΐου 2018 από DIMITRISG
Fortistis Δημοσ. 21 Μαΐου 2018 Δημοσ. 21 Μαΐου 2018 1 ώρα πριν, DIMITRISG είπε Δεν ξέρω ποιο είναι το συνηθισμένο debugging Αυτό που κάνω είναι να βλέπω το traceaback της Python, αλλά στο συγκεκριμένο κρασάρισμα δεν υπάρχει. Θα το κοιτάξω αλλά πιστεύω ότι δεν θα μου εμφανίζει κάποιο backtrace Για να κάνεις debugging δεν χρειάζεσαι το "backtrace" που αναφέρεις. Εφόσον δεν ξέρεις ούτε τι είναι το debugging, τότε θα προτείνω και εγώ να χρησιμοποιήσεις το PyCharm και να δεις κανένα yt video σχετικά με debugging σε PyCharm. Είναι απλό αλλά χρειάζεται να το δεις/δουλέψεις ή να γνωρίζεις γενικά από debugging.
k33theod Δημοσ. 21 Μαΐου 2018 Δημοσ. 21 Μαΐου 2018 (επεξεργασμένο) Εφόσον το εκτελέσιμό σου έχει έχει κατάληξη .pyw άλλαξέ το σε .py. Άνοιγε μια consola και τρέχε εκεί το πρόγραμμά σου με python ektelesimo.py Αυτό θα σου επιτρέψει να έχεις στο background μια consola που πιθανός ίσως σου εμφανίζει κάποια πράγματα. Παρακάλα να crasharei. Εφόσον κάνει crash θα πάρεις λογικά στην consola κάποιο μύνημα με το λόγο που crashare. Τρέχε το πρόγραμμα σου με αυτόν τον τρόπο μέχρι να πετύχεις το crash. Μετά τη διόρθωση του λάθους μπορείς να το ξαναγυρίσεις σε .pyw Επεξ/σία 21 Μαΐου 2018 από k33theod 1
DIMITRISG Δημοσ. 22 Μαΐου 2018 Μέλος Δημοσ. 22 Μαΐου 2018 13 ώρες πριν, k33theod είπε Εφόσον το εκτελέσιμό σου έχει έχει κατάληξη .pyw άλλαξέ το σε .py. Άνοιγε μια consola και τρέχε εκεί το πρόγραμμά σου με python ektelesimo.py Αυτό θα σου επιτρέψει να έχεις στο background μια consola που πιθανός ίσως σου εμφανίζει κάποια πράγματα. Παρακάλα να crasharei. Εφόσον κάνει crash θα πάρεις λογικά στην consola κάποιο μύνημα με το λόγο που crashare. Τρέχε το πρόγραμμα σου με αυτόν τον τρόπο μέχρι να πετύχεις το crash. Μετά τη διόρθωση του λάθους μπορείς να το ξαναγυρίσεις σε .pyw Το πρόβλημα είναι ότι δεν έχω traceback Είναι σαν να κλείνω την εφαρμογή κανονικά Στο τερματικό απλά επιστρέφει στον κατάλογο Κάτι κάνει και κρασάρει ο μεταγλωττιστής Python
pmav99 Δημοσ. 22 Μαΐου 2018 Δημοσ. 22 Μαΐου 2018 (επεξεργασμένο) για να πάρεις traceback, θα πρέπει το process να τερματιστεί κανονικά. Αν πεθαίνει η διεργασία απότομα (δηλαδή έχεις segfault), δεν τρέχει το "except του main loop της python"το οποίο και είναι και υπεύθυνο για τη την εμφάνιση του traceback (πληροφοριακά, η συνάρτηση είναι η sys.excepthook. To βάζω σε εισαγωγικά γιατί o κώδικας του interpreter είναι σε C, δεν υπάρχει δηλαδή 'except'). Λογικά, για να δεις τη συμβαίνει θα πρέπει να χρησιμοποιήσεις python με τα debugging symbols enabled. Πιθανά να θέλει και τα pyqt bindings να έχουν τα debugging symbols. Πρακτικά αυτό μπορεί να σημαίνει ότι πρέπει να τα κάνεις compile μόνος σου... Αν είσαι τυχερός μπορεί και να τη γλυτώσεις βέβαια https://stackoverflow.com/questions/4074870/tips-on-debugging-pyqt https://wiki.python.org/moin/DebuggingWithGdb edit τώρα είδα ότι λες για windows, sorry αλλά δεν έχω ιδέα από win. φαντάζομαι ότι θα είναι αντίστοιχα τα πράγματα, αλλά who knows... edit2. Ανεξάρτητα του τι και πως, προσπάθησε να κάνεις reproducible το λάθος. Επεξ/σία 22 Μαΐου 2018 από pmav99
DIMITRISG Δημοσ. 22 Μαΐου 2018 Μέλος Δημοσ. 22 Μαΐου 2018 Σωστά, από ότι κατάλαβα και από τα σχετικά άρθρα μόνον στο Λίνουξ μπορείς να συλλάβεις το κρασάρισμα της ίδιας της γλώσσας. * Πάντως φαίνεται ότι δεν θα το χρειαστώ διότι φταίει μια βιβλιοθήκη που χρησιμοποιώ η οποία διαβάζει binary αρχεία Σε τέτοιες περιπτώσεις το καλύτερο είναι αν το επιτρέπουν όλες οι βιβλιοθήκες να χρησιμοποιηθεί περιβάλλον Λίνουξ Ευχαριστώ
pmav99 Δημοσ. 23 Μαΐου 2018 Δημοσ. 23 Μαΐου 2018 Αφού βρήκες τι είναι όλα καλά. Αφου είναι απλά διάβασμα αρχείων, τσέκαρε μήπως μπορείς να το κάνεις σε άλλο process για να μην πεθαίνει το main > μόνον στο Λίνουξ μπορείς να συλλάβεις το κρασάρισμα της ίδιας της γλώσσας Είσαι σίγουρος; link;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα