
Στην ιδανική περίπτωση ο αναγνώστης έχει αναβαθμιστεί μια εγγενή C ++ πρόγραμμα σε Visual Studio 2008, το οποίο περιέχει ένα μπλοκ OpenClipboard (). Γιατί να μην δοκιμάσετε τον καθορισμό ενός breakpoint ακριβώς μετά από να πάρει μια επιτυχημένη επιστροφή κώδικα από OpenClipboard () και βήμα μέσω του κωδικού σας. Σύμφωνα με το Διαδίκτυο μπορεί να λειτουργήσει στο σύστημά σας, αλλά φυσικά, όχι για το δικό μου, ευχαριστώ για την προσπάθεια. 


Googling για παράδειγμα ((OpenClipboard 1418 vc6)) βρίσκει άρθρα όπως GetClipboardData αποτυγχάνει στο πρόγραμμα εντοπισμού σφαλμάτων και Κανένα σφάλμα στην VC ++ 6 αλλά Σφάλμα σε VC ++ 2005. Ρεαλιστικά για-την-στιγμή, το πρόβλημα λύθηκε - απλά δεν μπορείτε να ορίσετε σημεία διακοπής στο πλαίσιο του εν λόγω κώδικα, θα πρέπει να σκίουρος πληροφορίες και να ρυθμίσετε το σημείο διακοπής μετά οι λειτουργίες προχείρου γίνει. Σφάλμα 1418 είναι «Θέματος δεν έχει πρόχειρο ανοιχτό», αλλά δουλεύει μια χαρά για όσο διάστημα δεν βήμα με VS.NET, ή όπως λέω, αν έχετε κρατήσει σημεία διακοπής έξω από το πρόχειρο-ανοίγματος-κλεισίματος μπλοκ.


Θα αισθανθείτε καλύτερα γνωρίζοντας ποιο είναι το ακριβές πρόβλημα είναι με το πρόγραμμα εντοπισμού σφαλμάτων VS.NET.


Όντας ένα C ++ πρόσωπο είμαι μόνο αμυδρά γνωρίζουν ότι δεν πρέπει να σκέφτονται από την άποψη των θεμάτων, όταν κάνει dot-Net. Τέλος πάντων δεν κατάφερε να βρει τον γκουρού ποιότητας εξήγηση για το τι πραγματικά συμβαίνει, αν σε πραγματικότητα το πρόβλημα είναι ότι το σημείο-Net εντοπισμού σφαλμάτων είναι διακριτικά παρεμβαίνει με το νήμα-πληροφορίες με κάποιο τρόπο, όταν και μόνο-βήμα μέσα από εγγενή C ++ κώδικα. 


Σύστημα-σοφός: περίπου ένα χρόνο παλιά, δύο dual-core Xeon, το 4 CPU, σύμφωνα με XP-pro. Είχα μόλις τελειώσει τον εντοπισμό σφαλμάτων του κώδικα με ενιαία-ενίσχυση μέσα από αυτό το vc6 κάτω XP-SP2-32-bit. Έτσι ξέρω ότι ο κώδικας ήταν λίγο-πολύ λεπτή κάτω vc6. Ωστόσο, όταν δοκιμάστηκε με CF\_TEXT 10 megabyte πήρα εξαιρέσεις. Σκέφτηκα να προσπαθήσω εντοπισμό σφαλμάτων κάτω από το καλύτερο μοντέλο εξαίρεση XP-x64.


Ανασύνθεση με οπτικό-studio-2008, δεν θα μπορούσα να πάρετε τον κώδικα για ένα στάδιο σε όλα. OpenClipboard εργαστεί, αλλά EnumClipboardFormats () δεν λειτούργησε, τίποτα δεν λειτούργησε όταν μονής ενισχυθεί. Ωστόσο, όταν έθεσα το σημείο διακοπής κάτω από την πλήρη μπλοκ του κώδικα, όλα πήγαν μια χαρά. Και *ΝΑΙ* vc2008 έκανε μια ακριβή διαγνωστική «διαφθορά πλαίσιο της στοίβας γύρω szBuf. Υπάρχουν πολλά να αρέσει vc2008. Θα ήταν ωραίο αν αυτό ήταν κάπως απλώς ένα πρόβλημα πρόχειρο - χωρίς να γνωρίζει ότι θα αισθάνονται υποχρεωμένοι να ανησυχείτε για την ενίσχυση μέσω τίποτα, αν το νήμα-πλαίσιο, τα θέματα μπορεί να οφείλεται στο dot-Net-εντοπισμού σφαλμάτων.

 
Γιατί δεν μπορώ σε ένα στάδιο Πρόχειρο κώδικα μέσα στο πρόγραμμα εντοπισμού σφαλμάτων VS.NET;
=============================================================================================



Ποτέ δεν έχω εξετάσαμε αυτό, αλλά είναι αρκετά εύκολο να μαντέψει:


1. [Το πρόχειρο είναι ένα κοινό αγαθό](https://blogs.msdn.com/oldnewthing/archive/2008/06/04/8572362.aspx)
2. Μόνο μία εφαρμογή (ανά επιφάνεια εργασίας) μπορεί να «κατέχει» το πρόχειρο σε κάθε δεδομένη χρονική στιγμή
3. Η εφαρμογή σας αυτή τη στιγμή κατέχει (μετά την κλήση `OpenClipboard()`)
4. VS θέλει (πιθανώς επειδή, μεταξύ άλλων, είναι ένα πρόγραμμα επεξεργασίας)
5. Ενώ η εφαρμογή σας έχει σταματήσει σε ένα breakpoint, δεν ποσό της αναμονής θα βρείτε ποτέ το πρόχειρο δεν ανήκει εφαρμογή σας.
6. Ιλαρότητα ακολουθεί!

 

Μη χάνετε χρόνο υποψίες ότι είναι ένα .NET πράγμα. Κατά καιρούς, η σχέση μεταξύ Visual Studio.NET και το .NET runtime είναι σαν ActiveX και ActiveDirectory - σας λέει ποια marketeer συμμετείχε, Visual Studio.NET στην πραγματικότητα έχει μια σειρά από προγράμματα εντοπισμού σφαλμάτων. Native, script, ή διαχείριση - μόνο το τελευταίο είναι πραγματικά .NET σχετίζονται. Θα χρησιμοποιείτε το Native πρόγραμμα εντοπισμού σφαλμάτων.


Αν θέλετε να διερευνήσει, προτείνω συνδέοντας OpenClipboard χρησιμοποιώντας το Microsoft Παρακάμψεις, τότε εκτελείται η εφαρμογή σας στο πρόγραμμα εντοπισμού σφαλμάτων. Θα ήθελα να είναι σε θέση να δουν ποιος ανταγωνίζονται για το πρόχειρο.

 