Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω ένα πρόγραμμα γράψει σε qt5 python3 και κάποιες φορές σε ανύποπτο χρόνο κρασάρει.

Μου βγάζει μήνυμα ότι η Python κατέρρεψε. Αλλά δεν υπάρχει backtrace

Πώς μπορώ να δω τι πταίει;

Δημοσ. (επεξεργασμένο)
16 ώρες πριν, Fortistis είπε

Με το συνηθισμένο debugging δεν μπορείς;

Εάν όχι, γιατί;

Δεν ξέρω ποιο είναι το συνηθισμένο debugging

Αυτό που κάνω είναι να βλέπω το traceaback της Python, αλλά στο συγκεκριμένο κρασάρισμα δεν υπάρχει.

14 ώρες πριν, mad-proffessor είπε

Θα το κοιτάξω

αλλά πιστεύω ότι δεν θα μου εμφανίζει κάποιο backtrace

Επεξ/σία από DIMITRISG
Δημοσ.
1 ώρα πριν, DIMITRISG είπε

Δεν ξέρω ποιο είναι το συνηθισμένο debugging

Αυτό που κάνω είναι να βλέπω το traceaback της Python, αλλά στο συγκεκριμένο κρασάρισμα δεν υπάρχει.

Θα το κοιτάξω

αλλά πιστεύω ότι δεν θα μου εμφανίζει κάποιο backtrace

 

Για να κάνεις debugging δεν χρειάζεσαι το "backtrace" που αναφέρεις. Εφόσον δεν ξέρεις ούτε τι είναι το debugging, τότε θα προτείνω και εγώ να χρησιμοποιήσεις το PyCharm και να δεις κανένα yt video σχετικά με debugging σε PyCharm. 

Είναι απλό αλλά χρειάζεται να το δεις/δουλέψεις ή να γνωρίζεις γενικά από debugging. 

Δημοσ. (επεξεργασμένο)

Εφόσον το εκτελέσιμό σου έχει έχει κατάληξη .pyw άλλαξέ το σε .py.

Άνοιγε μια consola και τρέχε εκεί το πρόγραμμά σου με python ektelesimo.py 

Αυτό θα σου επιτρέψει να έχεις στο background μια consola που πιθανός ίσως σου εμφανίζει κάποια πράγματα. Παρακάλα να crasharei. Εφόσον κάνει crash θα πάρεις λογικά στην consola κάποιο μύνημα με το λόγο που crashare. Τρέχε το πρόγραμμα σου με αυτόν τον τρόπο μέχρι να πετύχεις το crash. Μετά τη διόρθωση του λάθους μπορείς να το ξαναγυρίσεις σε .pyw

Επεξ/σία από k33theod
  • Like 1
Δημοσ.
13 ώρες πριν, k33theod είπε

Εφόσον το εκτελέσιμό σου έχει έχει κατάληξη .pyw άλλαξέ το σε .py.

Άνοιγε μια consola και τρέχε εκεί το πρόγραμμά σου με python ektelesimo.py 

Αυτό θα σου επιτρέψει να έχεις στο background μια consola που πιθανός ίσως σου εμφανίζει κάποια πράγματα. Παρακάλα να crasharei. Εφόσον κάνει crash θα πάρεις λογικά στην consola κάποιο μύνημα με το λόγο που crashare. Τρέχε το πρόγραμμα σου με αυτόν τον τρόπο μέχρι να πετύχεις το crash. Μετά τη διόρθωση του λάθους μπορείς να το ξαναγυρίσεις σε .pyw

Το πρόβλημα είναι ότι δεν έχω traceback

Είναι σαν να κλείνω την εφαρμογή κανονικά

Στο τερματικό απλά επιστρέφει στον κατάλογο

Κάτι κάνει και κρασάρει ο μεταγλωττιστής Python

Δημοσ. (επεξεργασμένο)

για να πάρεις 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 το λάθος.

Επεξ/σία από pmav99
Δημοσ.

Σωστά, από ότι κατάλαβα και από τα σχετικά άρθρα μόνον στο Λίνουξ μπορείς να συλλάβεις το κρασάρισμα της ίδιας της γλώσσας.

* Πάντως φαίνεται ότι δεν θα το χρειαστώ διότι φταίει μια βιβλιοθήκη που χρησιμοποιώ η οποία διαβάζει binary αρχεία

Σε τέτοιες περιπτώσεις το καλύτερο είναι αν το επιτρέπουν όλες οι βιβλιοθήκες να χρησιμοποιηθεί περιβάλλον Λίνουξ

Ευχαριστώ

Δημοσ.

Αφού βρήκες τι είναι όλα καλά. Αφου είναι απλά διάβασμα αρχείων, τσέκαρε μήπως μπορείς να το κάνεις σε άλλο process για να μην πεθαίνει το main

> μόνον στο Λίνουξ μπορείς να συλλάβεις το κρασάρισμα της ίδιας της γλώσσας

Είσαι σίγουρος; link;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...