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

 

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

AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

Îåêßíçóå áðü ôï ìÝëïò Dimitris Andrakakis. Τελευταία δημοσίευση από το μέλος Dimitris Andrakakis στις 27-09-2011, 12:49. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-09-2011, 11:04 67215

    AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Καλημέρα everybody,

    Φτιάχνω μια web εφαρμογή (C#, ASP.NET 4.0, VS 2010) η οποία αντλεί και στέλνει δεδομένα από και προς τα web services μιας άλλης εφαρμογής. Χρησιμοποιώ και τα DevExpress για grid κλπ.

    Έχω ένα μήνυμα που μου έχει σπάσει τα νεύρα : [Message from webpage] "Object reference not set to an instance of an object". Το μήνυμα εμφανίζεται ανεξάρτητα ποιόν Browser χρησιμοποιώ (στο τέλος έχω screenshots).

    Το πρόβλημα μου είναι ότι δεν μπορώ με τίποτα να βρω από που σηκώνεται το %@$&%&* το μήνυμα ! Έχω δοκιμάσει τα εξής :

    1. Έχω ενεργοποιήσει το break on exceptiions του Visual Studio
    2. Από τα F12 - Developer tools του IE9 έχω ενεργοποιήσει το break on error
    3. Έχω παίξει λίγο με το firebug
    4. Από την Javascript console του Chrome έχω ενεργοποιήσει το pause on all exceptions
    ...αλλά τίποτα.

    Έχει κανένας καμιά ιδέα πώς μπορώ να το πιάσω το μήνυμα, να βρω από που σηκώνεται ;

    Screenshot από Firefox 6 :



    IE 9 :



    Chrome 13 :


  •  12-09-2011, 19:29 67224 σε απάντηση της 67215

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Καλησπέρα Δημήτρη :)
    To μήνυμα υποδηλώνει ότι δεν έχεις αρχικοποιήσει κάποιο αντικείμενο στο c# κώδικά σου και δεν είναι javascript related οπότε to firebug δε σε βοηθά ούτως ή αλλως. Τα screenshots σου δεν φαίνονται.
    Κοίταξε στο σημείο που καλείς το service & binding...




    Galaxy power  
  •  12-09-2011, 19:39 67226 σε απάντηση της 67224

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Επίσης, αν τρέξεις τον κώδικα μέσα από το Visual Studio ο debugger θα σταματήσει στο σημείο που πέφτει το exception.

    Υ.Γ. Κοίταξες το Event Log μήπως έχει γραφτεί εκεί ολόκληρο το exception?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-09-2011, 10:34 67236 σε απάντηση της 67226

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Καλημέρα !

    Ρε παιδιά δεν είμαι άσχετος... έχω φάει τα μάτια μου στο debugging 15 χρόνια τώρα, και ναι, ξέρω τι σημαίνει το μήνυμα !!! Smile  Smile  Smile

    Όπως σας έγραψα το #1 "Έχω ενεργοποιήσει το break on exceptions του Visual Studio".

    Δεν σταματάει το ρημάδι πουθενά, ούτε στο server-side C# κώδικα ούτε στο client-site javascript. Και ναι, φυσικά το τρέχω μέσα από το Visual Studio --όπως και εκτός αυτού.

    Τι breakpoint του έχω βάλει να το πάω γραμμή-γραμμή, τίποτα. Δεν σταματάει πουθενά.

    Screenshot από Firefox
    και από ΙΕ .




  •  13-09-2011, 10:36 67237 σε απάντηση της 67224

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Που είσαι ρε φίλε ;;; Τι κάνεις ;;;

    (Μην απαντήσεις απο' δω, στείλε mail !)
  •  13-09-2011, 11:06 67238 σε απάντηση της 67236

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Dimitris Andrakakis:

    Τι breakpoint του έχω βάλει να το πάω γραμμή-γραμμή, τίποτα. Δεν σταματάει πουθενά.


    Η αλήθεια είναι ότι χωρίς λίγο κώδικα είναι πολύ δύσκολο να μαντέψει κανείς τι ακριβώς συμβαίνει. Ειδικά αν κάποια "πραγματάκια" τρέχουν ασύγχρονα. Αφού έχεις βάλει breakpoint σε κάθε σειρά, κάνε hover με το mouse σε όλα τα objects (ένα προς ένα) που θα πρέπει να έχουν γίνει instantiated, line by line. Σίγουρα κάποιο θα είναι null ενώ δεν θα έπρεπε. Λίγο μπακάλικη μέθοδος, αλλά καμιά φορά αποδίδει...

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  13-09-2011, 11:17 67239 σε απάντηση της 67236

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Dimitris Andrakakis:
    Καλημέρα !

    Ρε παιδιά δεν είμαι άσχετος... έχω φάει τα μάτια μου στο debugging 15 χρόνια τώρα, και ναι, ξέρω τι σημαίνει το μήνυμα !!! Smile  Smile  Smile

    Όπως σας έγραψα το #1 "Έχω ενεργοποιήσει το break on exceptions του Visual Studio".

    Δεν σταματάει το ρημάδι πουθενά, ούτε στο server-side C# κώδικα ούτε στο client-site javascript. Και ναι, φυσικά το τρέχω μέσα από το Visual Studio --όπως και εκτός αυτού.

    Τι breakpoint του έχω βάλει να το πάω γραμμή-γραμμή, τίποτα. Δεν σταματάει πουθενά.

    Screenshot από Firefox
    και από ΙΕ .


    Δύο περιπτώσεις τέτοιες είχα μέχρι τώρα.

    1) Βλέπω οτι χρησιμοποιείς component απο τρίτη εταιρία. Είσαι σίγουρος ότι δεν σηκώνεται απο εκεί; Γιατί εάν σηκώνεται απο εκεί με λάθος τρόπο (πχ AppException, αντί για "σωστό" exception), τότε μπορεί να περιμένεις να το πιάσεις αλλού, ενώ να βγαίνει απο αλλού πχ να σκάει στο Session_Start, κι όχι εκεί που το περιμένεις εσύ. Συνήθως εάν δεν μπορεί να το πιάσει το VS σημαίνει οτι σκάει καπου είτε μέσα στο CLR, είτε δεν έχει σηκώσει το VS σωστά pdb. Δοκίμασε να κάνεις Clear solution και σβήσε ΚΑΙ το Obj/ folder του project και ξαναδοκίμασε debug.

    2) Εάν το κάνεις/κάνει rethrow απο αλλού, οπού πάλι δεν είναι εκεί που το περιμένεις εσύ. Βάλτο να πιάσει το exception σε ολόκληρο το Application μπας και σου γυρίσει Stack trace.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  13-09-2011, 11:43 67240 σε απάντηση της 67236

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Τα grids είναι λίγο περίεργα... Για παράδειγμα, βρήκα μια τέτοια περίπτωση. Δεν έχω δουλέψει με το συγκεκριμένο component, ούτε ξέρω τι κάνει ο κώδικάς σου. Και στις δύο οθόνες, όμως, που παραθέτεις, παρατήρησα ότι υπάρχουν κελιά χωρίς τιμές. Μήπως συμβαίνει κάτι εκεί μέσα; Παίρνεις σφάλμα ακόμα και όταν όλα τα κελιά έχουν τιμή;

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  13-09-2011, 11:47 67241 σε απάντηση της 67237

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Αυτό που δεν ανέφερες είναι ότι το μήνυμα εμφανίζεται σε javascript dialog box αντί για το κλασσικό YSOD. Προφανώς χρησιμοποιείς κώδικα, δικό σου ή των control ή των framework που χρησιμοποιείς, που πιάνει το exception και το παρουσιάζει στο χρήστη. Τί χρησιμοποιείς πέρα από controls? Μήπως χρησιμοποιείς XAF ή κάτι παρόμοιο? Κάποιο logger? Το κοίταξες το event log? Μήπως έχεις ορίσει templates για κάποια από τα controls τα οποία σηκώνουν αυτό το μήνυμα?

    Προφανώς κάποιος κώδικας πιάνει αυτό το exception και το στέλνει στον browser. Για να πιάσεις αυτό το exception θα πρέπει να ορίσεις ότι ένα exception θα πιάνεται όταν ρίχνεται, όχι μόνο αν δεν το πιάσει κανείς άλλος. Αν όμως το exception πέφτει μέσα σε κώδικα control ή framework (όπως υποψιαζόμαστε όλοι) θα πρέπει να απενεργοποιήσεις το "Enable Just My Code" από το Debug -> Options and Settings -> General.

    Μέσω της ονυχομυριστικής θα έλεγα ότι δεν έχεις δώσει σωστά σε κάποιο third party κάποια παράμετρο με αποτέλεσμα να πέφτει exception στον κώδικα του. Το control μετά πιάνει το exception και το στέλνει στη σελίδα με αποτέλεσμα το Visual Studio να μη βλέπει ποτέ το exception. Αυτή η συμπεριφορά προϋποθέτει ότι έχεις ορίσει το Catch when thrown και έχεις ενεργοποιημένο (είναι by default) to Just My Code.
    Σε αυτή την περίπτωση κοίτα το event log και όποιο άλλο log χρησιμοποιεί η εφαρμογή σου γιατί συνήθως δεν κάνει κανείς log μόνο στον browser.

    Επιπλέον, κατέβασε και τρέξε το DebugView από τα Sysinternal tools. Το DebugView εμφανίζει το debug output του μηχανήματος σου, στο οποίο γράφει ο default Trace Listener του ASP.NET και οι περισσότεροι άλλοι loggers. Ακόμα και αν το control δεν κάνει log το συγκεκριμένο exception, μπορεί να δεις άλλα μηνύματα την ώρα που εμφανίζεται το λάθος, τα οποία θα σε βοηθήσουν.

    Θα σου έλεγα να βάλεις και το ELMAH αλλά υποψιάζομαι ότι αν κάποιο control "μασάει" το exception δεν θα φτάσει ούτε στο ELMAH.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-09-2011, 15:59 67245 σε απάντηση της 67241

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)


    Bingo !

    Όντως το μήνυμα σηκώνεται από τα DevExpress... δεν το είχα φανταστεί, και δεν πήγε το μυαλό μου να ξετσεκάρω το "just my code".

    Το ξε-τσέκαρα και είδα ότι το exception σηκώνεται από εδώ:

    DevExpress.Web.Data.WebDataCachedProvider.GetFieldTypeCore(string fieldName)

    Από 'κει και πέρα το έστειλα στο support της DevExpress να βγάλουν καμιά άκρη. Αν ενδιαφέρεσαι για το followup, το issue που άνοιξα (με όλες τις ανατριχιαστικές λεπτομέρειες, stack trace κλπ.) είναι εδώ :

    http://www.devexpress.com/Support/Center/Issues/ViewIssue.aspx?issueid=Q343381

    Σ' ευχαριστώ πολύ, τόσο εσένα όσο και τα άλλα παιδιά που σπεύσανε να βοηθήσουν !
  •  13-09-2011, 19:29 67250 σε απάντηση της 67245

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Απάντησαν σχετικά γρήγορα!! Όμως, υπάρχει κάτι που δεν καταλαβαίνω... Εσύ τους γράφεις:

    2. All data table "Day_xxx-yy__date" fields are of type System.Decimal.

    Κι αυτοί απαντάνε:

    I assume that this issue is caused by the fact that the old data was cached using a wrong format for the date. (??)

    Σημ.: Τα ερωτηματικά στο τέλος είναι δικά μου...

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  27-09-2011, 12:49 67538 σε απάντηση της 67250

    Απ: AAAARRRGGGHHHH !!! (Object reference not set to an instance of an object)

    Ναι, και εγώ απόρησα (αν και καθυστέρησα να απαντήσω, ήμουν εκτός Ελλάδος). Πάντως αυτό που μου απάντησαν δούλεψε με τη μια.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems