ippo00 Δημοσ. 23 Ιουλίου 2010 Δημοσ. 23 Ιουλίου 2010 Δεν χρειάζεται να γραφεί σε asm, ένα optimisation barrier αρκεί. Επίσης από μια έκδοση και μετά το gcc υποστηρίζει διαφορετικό optimisation του κώδικα (νομίζω με κάποιο preprocessor statement) αλλά δεν το έχω χρησιμοποιήσει ποτέ και δεν ξέρω πως υλοποιείται. Τέσπα εξακολουθώ να αμφιβάλλω ότι φτάιει το οπτιμισάτιον και ότι inline, και barriers θα το διορθώσουν (ίσως εμφανιστεί στο μέλλον και να crash χωρίς να έχεις ιδέα γιατί. Κάτι μου λεεί πάντως ότι φτάιει το function call.
kfoynt Δημοσ. 23 Ιουλίου 2010 Μέλος Δημοσ. 23 Ιουλίου 2010 Λοιπόν, 1 - 1 Ναι λογικό το βρίσκω να μην μπορεί να μυρίσει κάποιος τα νύχια του, αλλά έλεγα μήπως φταίει το option. Γιατί μου έκανε εντύπωση που χωρις αυτό δεν έπαιρνα segmentation. Άλλο ένα πρόβλημα που υποψιάζομαι είναι ότι ο pointer L δείχνει σε extern μεταβλητή, και ο κώδικας που έδωσα βρίσκεται σε μία function που έχει ως όρισμα τον pointer L. Ναι, το πρόγραμμα αποτελείται από πολλά αρχεία. Αυτό που έκανα quote το βρήκα εδώ: http://www.yolinux.com/TUTORIALS/GDB-Commands.html στην ενότητα GDB operations Ακόμη και να στείλω εκτελέσιμο, το πρόγραμμα χρησιμοποιεί Matlab engine, οπότε θα σου ζητήσει paths για libraries μέσα απο matlab, θα πρέπει να φτιάχνεις paths στα makefile κτλ κτλ, και μετά για να το κάνεις compile θα πρέπει να χρησιμοποιήσεις mex. Είναι λίγο μπέρδεμα. Θα κρατήσω οτι το option -O2 δεν δημιουργεί προβλήματα και ο θεος βοηθός .
Evgenios1 Δημοσ. 23 Ιουλίου 2010 Δημοσ. 23 Ιουλίου 2010 @ippo Εφοσον επιμενει οτι δεν υπαρχει λαθος απο την μερια του, τοτε κανει λαθος μεταφραση ο compiler. Προσωπικα πιστευω οτι ειναι σε λαθος δρομο. Καλυτερα να ξαναδει τη δομη του προγραμματος παρα να περιμενει θαυματα απο τον compiler.
kfoynt Δημοσ. 23 Ιουλίου 2010 Μέλος Δημοσ. 23 Ιουλίου 2010 Anw, ευχαριστώ για τις προτάσεις. Θα δω τι μπορώ να κάνω με το compile, και αν δεν βγει τίποτα debugging στον κώδικα. Έχετε να μου προτείνετε κανενα πιο αποδοτικό τρόπο για να κάνω debug σε τέτοιες περιπτώσεις απο το να κοιτάω απλά τιμές στις μεταβλητές? assembly μήπως???
nplatis Δημοσ. 23 Ιουλίου 2010 Δημοσ. 23 Ιουλίου 2010 Αυτό που σημαίνει το σχόλιο είναι το εξής: Με την επιλογή -O2 o compiler μπορεί να αλλάζει τη σειρά του αντικείμενου κώδικα που παράγει σε σχέση με τον πηγαίο κώδικα, επομένως μπορεί ο debugger να μην μπορεί να παρακολουθήσει σωστά τη ροή του προγράμματος. Για την περίπτωσή σου, αν το segmentation fault βγαίνει μέσα από τον gdb, είναι πιθανό να μην σου δίνει σωστά το σημείο στο οποίο αυτό συμβαίνει! Νομίζω ότι ο καλύτερος (δυστυχώς) τρόπος είναι οι παλιές-καλές εντολές εκτύπωσης για να εντοπίσεις ακριβώς που συμβαίνει το πρόβλημα... Και θυμίσου να κάνεις recompile όλο το πρόγραμμα...
kfoynt Δημοσ. 23 Ιουλίου 2010 Μέλος Δημοσ. 23 Ιουλίου 2010 Για την περίπτωσή σου, αν το segmentation fault βγαίνει μέσα από τον gdb, είναι πιθανό να μην σου δίνει σωστά το σημείο στο οποίο αυτό συμβαίνει! Χεχε, καλό αυτό μου άρεσε... Οκ έχω μία ιδέα τότε, το τεστάρω και βλέπω Ευχαριστώ! ---------- Προσθήκη στις 16:17 ---------- Προηγούμενο μήνυμα στις 16:11 ---------- Λοιπόν, όντως το segmentation fault υπάρχει!! αλλά αν χρησιμοποιώ την επιλογή -Ο2 όπως ειπες δεν μου το πετάει στην σωστή θέση!! Οπότε κάνω compile προς το παρόν χωρίς -O2, και όταν με το καλό δεν υπάρχουν bugs το κάνω compile με -Ο2 και είμαι οκ...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.