Το Probekit είναι ένα πλαίσιο εργασίας στην πλατφόρμα Eclipse το οποίο μπορείτε να χρησιμοποιείτε για την εγγραφή και τη χρήση διερευνητών.
Οι διερευνητές είναι τμήματα κώδικα Java τα οποία μπορούν να προστεθούν σε ένα
πρόγραμμα με σκοπό να παρέχουν πληροφορίες για αυτό καθώς εκτελείται.
Για να κατανοήσετε τους διερευνητές, ξεκινήστε με το δείγμα του διερευνητή που περιγράφεται εδώ. Αποτελεί έναν βασικό διερευνητή ο οποίος τυπώνει ένα μήνυμα που προσδιορίζει κάθε μέθοδο που καλείται όταν εκτελείται το πρόγραμμά σας.
Οι διερευνητές ορίζονται από καταχωρήσεις τις οποίες πραγματοποιείτε στη λειτουργία επεξεργασίας Probekit. Το δείγμα αυτό περιέχει ένα απλό τμήμα κώδικα. Τα
τμήματα κώδικα ορίζουν τι κάνει ο διερευνητής. Οι ορισμοί των τμημάτων κώδικα συμπεριλαμβάνουν:
- Έναν προσδιορισμό του είδους του τμήματος κώδικα. Αυτό το τμήμα κώδικα είναι ένα εισαγωγικό τμήμα, που σημαίνει ότι εκτελείται τη στιγμή εισόδου στη μέθοδο.
- Στοιχεία δεδομένων προσβάσιμα από το τμήμα κώδικα. Εδώ, τα στοιχεία δεδομένων επιτρέπουν στο τμήμα κώδικα την πρόσβαση σε ονόματα κλάσεων και μεθόδων.
- Το τμήμα κώδικα Java που ορίζει τη λογική του διερευνητή.
Αυτό το τμήμα κώδικα καλεί την System.out.println για την εμφάνιση των ονομάτων κλάσεων και μεθόδων, για τις μεθόδους που εκτελούνται.
Παρακάτω δίνεται η μορφή του διερευνητή στη λειτουργία επεξεργασίας Probekit:

Αφού δημιουργήσετε έναν διερευνητή χρησιμοποιώντας τη λειτουργία επεξεργασίας Probekit, μπορείτε να τον εφαρμόσετε στα αρχεία class και jar του έργου σας. Στη συνέχεια, όταν εκτελείτε το πρόγραμμα, το τμήμα κώδικα θα εκτελείται μαζί με το πρόγραμμά σας.
Παρακάτω δίνεται μια επισκόπηση για τον τρόπο δημιουργίας και χρήσης των διερευνητών, καθώς και πληροφορίες σχετικά με τον τρόπο με τον οποίο το Probekit σας βοηθά:
- Χρησιμοποιείτε τη λειτουργία επεξεργασίας Probekit για να δημιουργήσετε διερευνητές σε αρχεία πρωτογενούς κώδικα Probekit.
Τα αρχεία πρωτογενούς κώδικα Probekit πρέπει να έχουν την επέκταση .probe. Μπορούν να περιέχουν έναν ή περισσότερους διερευνητές και κάθε διερευνητής μπορεί να περιέχει ένα ή περισσότερα τμήμα κώδικα.
- Το Probekit συγκροτεί τα τμήματα κώδικα του διερευνητή σε ένα σύνολο μεθόδων Java και στη συνέχεια τα μεταγλωττίζει. Όταν το Probekit μεταγλωττίζει έναν διερευνητή, συνδυάζει τα τμήματα κώδικα του διερευνητή με τα τυπικά στερεότυπα Java και δημιουργεί πρωτογενή κώδικα Java για μια νέα κλάση διερευνητή. Οι λειτουργίες που δημιουργούνται από τα τμήματα κώδικα διερευνητή εμφανίζονται ως στατικές μέθοδοι της νέας κλάσης διερευνητή.
- Όταν εφαρμόζετε έναν διερευνητή, προσδιορίζετε τα αρχεία class και jar στόχους, δηλαδή τα αρχεία τα οποία θέλετε να εξετάσετε. Ο μηχανισμός ενοργάνωσης BCI (byte-code instrumentation) του Probekit παραπέμπει στη λίστα των διαθέσιμων διερευνητών και των αντίστοιχων μοτίβων στόχου και εισάγει κλήσεις προς τις μεθόδους του τμήματος κώδικα διερευνητή στα προγράμματα στόχους. Η διεργασία εισαγωγής προτάσεων κλήσης σε μεθόδους στόχους αναφέρεται ως ενοργάνωση.
Μια κλάση που περιέχει μια ενοργανωμένη μέθοδο καλείται ελεγχόμενη κλάση.
Τα στοιχεία δεδομένων που ζητούνται από ένα τμήμα κώδικα διερευνητή (για παράδειγμα, το όνομα μεθόδου και το όνομα κλάσης) μεταβιβάζονται ως ορίσματα.
- Μετά από την ενοργάνωση της εφαρμογής σας. Τα τμήματα κώδικα διερευνητή θα εκτελούνται όταν εκτελείται και το πρόγραμμα.
Το
είδος τμήματος κώδικα διερευνητή προσδιορίζει το πότε εκτελείται το τμήμα κώδικα. Μπορείτε να προσδιορίσετε είδη για τα οποία το τμήμα κώδικα εκτελείται στις ακόλουθες περιπτώσεις:
- Τη στιγμή εισόδου στη μέθοδο.
- Τη στιγμή εξόδου από τη μέθοδο (είτε με κανονική επιστροφή είτε ως αποτέλεσμα εξαίρεσης).
- Τη στιγμή της ρουτίνας χειρισμού εξαίρεσης, δηλαδή στην αρχή της συνθήκης catch ή στην αρχή της συνθήκης finally η οποία καλείται ως αποτέλεσμα μιας εξαίρεσης.
- Πριν από τον αρχικό κώδικα στη στατική λειτουργία απόδοσης αρχικών τιμών κλάσης.
- Πριν από κάθε εκτελέσιμη μονάδα κώδικα (όταν υπάρχουν διαθέσιμες πληροφορίες για τον πρωτογενή κώδικα).
- Όταν καλούνται συγκεκριμένες μέθοδοι. (Στην περίπτωση αυτή, η ενοργάνωση πραγματοποιείται στο σημείο κλήσης και όχι εντός της καλούμενης μεθόδου.)
Τα τμήματα κώδικα διερευνητή έχουν τη δυνατότητα πρόσβασης σε στοιχεία
δεδομένων που παρέχουν διάφορα είδη πληροφοριών σχετικά με την εφαρμογή στο σημείο στο
οποίο εισάγονται. Για παράδειγμα:
- Όνομα πακέτου, κλάσης και μεθόδου
- Υπογραφή μεθόδου
- Αντικείμενο this
- Ορίσματα
- Τιμή επιστροφής
Εάν θέλετε ο διερευνητής σας να εφαρμόζεται μόνο σε ορισμένες κλάσεις και μεθόδους,
προσδιορίστε τους στόχους ή ορίστε φίλτρα. Για περισσότερες πληροφορίες, ανατρέξτε στην
ενότητα Στόχοι και φίλτρα διερευνητών.