Visual Studio εντοπισμού σφαλμάτων επιβραδύνει το in-line κώδικα




Από τότε που αναβαθμίστηκε σε Visual Studio 2008 από VS2005, έχω βρει ένα πολύ ενοχλητικό συμπεριφορά κατά τον εντοπισμό σφαλμάτων μεγάλα έργα. Αν προσπαθώ να μπω inline κώδικα, το πρόγραμμα εντοπισμού σφαλμάτων φαίνεται να κλειδώσει για δεκάδες δευτερόλεπτα. Κάθε φορά που το βήμα μέσα σε μια τέτοια λειτουργία, υπάρχει μια παρόμοια παύση. Έχει κανείς δοκιμάσει αυτό και ο καθένας γνωρίζει ένα έργο γύρω;


Υστερόγραφο:


Αφού έμαθε ότι η MS είχε ένα service pack για VS2008 και χρειάζεται να το πάρει, λόγω των άλλων θεμάτων κατάρτιση, το πρόβλημα που αντιμετώπιζε με το πρόγραμμα εντοπισμού σφαλμάτων επιλύθηκε.
Θα χρησιμοποιηθεί για να πάρει αυτό - νομίζω ότι είναι ένα bug με το παράθυρο εντοπισμού σφαλμάτων «Autos»:


[http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/](https://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/)
Από μερικές από την αρχική έρευνα δεν φαίνεται να είναι μια εξαιρετικά απλή λύση. 


Φαίνεται ότι το να κάνουμε αυτό συνεπάγεται με το Visual Studio 2008, στην πραγματικότητα εγκατεστημένο στο διακομιστή συνεχούς ολοκλήρωσης, η οποία θα μπορούσε να είναι ένας διακόπτης διαπραγμάτευσης.


Στη συνέχεια, να ρυθμίσετε το MSTest.exe να τρέξει στη λίστα εργασιών, αλλά πρώτα θα πρέπει να κάνει ένα αρχείο δέσμης για να διαγράψετε τα αρχεία αποτελέσματα από προηγούμενες διελεύσεις και την ύπαρξη αυτού του αρχείου προκαλεί ένα σφάλμα.


Στη συνέχεια, δημιουργήστε ένα XSLT για να μορφοποιήσετε τα αποτελέσματα και να το βάλετε στο αρχείο dashboard.config.


Το άρθρο κωδικό έργου που βρήκα έχει πολύ περισσότερες λεπτομέρειες.


[Η ενσωμάτωση Visual 2008 Δοκιμές Μονάδα Studio ομάδας συστήματος με CruiseControl.NET](http://www.codeproject.com/KB/tips/VSTS2008_Tests_With_CCNET.aspx) Αυτή είναι μια σύγκρουση μεταξύ του οδηγού γραφικών σας και το Visual Studio. Μεταβείτε στη σελίδα ρυθμίσεων του οδηγού σας (Πίνακας ελέγχου) και να απενεργοποιήσετε τις συντομεύσεις περιστροφή της οθόνης. Με αυτή η σύγκρουση αφαιρεθεί, η συντόμευση θα λειτουργήσει στο Visual Studio. Δημιουργήστε ένα έργο βάσης δεδομένων χρησιμοποιώντας το Visual Studio Edition βάση δεδομένων, το βάζουμε σε έλεγχο πηγή και αφήστε τους προγραμματιστές κάνουν check-in κωδικό τους. Έχω κάνει αυτό και λειτουργεί καλά με την καθημερινή κατασκευάζει και προσφέρει μια μεγάλη υποστήριξη για τη διάρθρωση κώδικα της βάσης δεδομένων σας. Δείτε αυτό το blog post για τα χαρακτηριστικά


<http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx> το πρόβλημα μάλλον είναι ότι δεν κλείνει ουσιαστικά η εφαρμογή. είχα παρόμοιο θέμα πριν αρκετό καιρό(νομίζω κάποια στιγμή είχα απαντήσει εδώ σε ανάλογο θέμα). αυτό που έκανα εγώ και διόρθωσε το πρόβλημα ήταν η τροποποίηση της συντόμευσης για το άνοιγμα της εφαρμογής και η αλλαγή της γραμμής που ανοί… μάλιστα… μετά από μια ώρα ψάξιμο για ό,τι μπορείτε να φανταστείτε (character encoding μήπως δεν έπαιρνε τα "\ " για το κενό, δοκιμές με άλλους editors και χίλια δυο άλλο σχετικά και άσχετα και αφού ποστάρω το ερώτημα εδώ βρήκα τη λύση της μαμακίας μου σε δυο λεπτά.

λέω δεν κάνω copy paste από το te… > 
> Μου αρέσει η ιδέα ότι δεν χρειάζεται για την κατάρτιση των προγραμμάτων κάθε φορά που κάνετε μια αλλαγή. Καταλαβαίνω ότι οι ερμηνεύεται γλώσσες πιθανότατα συνηθισμένος χτυπήσει την ίδια απόδοση αυτή τη στιγμή να πάρει.
> 
> 
> 


Αυτό είναι το μεγαλύτερο πρόβλημα? μπορεί να ζείτε με το χτύπημα απόδοση. Θα μπορούσατε να δοκιμάσετε να χρησιμοποιήσετε την Python και την [επέκτασή του με την τρέχουσα C ++ σας modules](http://www.python.org/doc/ext/intro.html) για τα βαρέα τμήματα των επιδόσεων. Παρόλα αυτά, η αλλαγή ολόκληρου του συστήματός σας φαίνεται σαν μια μεγάλη προσπάθεια, αν ο μόνος λόγος είναι η έλλειψη της C ++ ταλέντο. Πρόσληψη ανθρώπους που ξέρουν C ++ φαίνεται να είναι η φθηνότερη επιλογή. Ναι, το Visual Studio θα αντιγράψετε ένα αρχείο DLL με την πορεία εξόδου σε οποιαδήποτε από τις δύο προϋποθέσεις κατωτέρω:


1. Το αρχείο DLL αναφέρεται ρητά με CopyLocal = true
2. Το αρχείο DLL αναφέρεται χωρίς CopyLocal ή έμμεσα μέσω κάποιου άλλου DLL που αναφέρεται **και δεν είναι στο GAC**


Ο λόγος για τον οποίο δεν θα αντιγράψει τοπικής όταν το αρχείο είναι στο GAC, είναι ότι κατά την επίλυση ονομάτων συνέλευση η GAC έχει ύψιστη προτεραιότητα, δηλαδή ακόμα και αν έχετε ένα (διαφορετικό) τοπικό αντίγραφο, θα χρησιμοποιείται η έκδοση από το Συμβούλιο Γενικών Υποθέσεων.


Σας προτείνω να δημιουργήσει έναν κατάλογο βιβλιοθήκης όπου θα τεθούν όλα τα εξωτερικά συγκροτήματα που αναφέρονται. Στη συνέχεια θα δημιουργήσει μια δέσμη ενεργειών αυτόματης MSBuild σε έναν υπολογιστή (ή VM) που δεν έχουν την Oracle-αρχείο gac'ed (ούτε Visual Studio εγκατασταθεί για αυτή την χάρη). Με αυτόν τον τρόπο, το αρχείο θα αντιγραφεί στην κατασκευή, και θα έχετε περισσότερο έλεγχο πάνω στο τι γίνεται ό, τι όταν χρησιμοποιείτε VS. Οι ακριβείς ορισμοί των `vsize`, `rss`, `rprvt`, `rshrd`, και άλλες σκοτεινές εμφάνιση συντομογραφίες ποικίλλουν από OS σε OS. Οι σελίδες του εγχειριδίου για τους `top`και `ps`τις εντολές θα έχουν κάποιο είδος της περιγραφής, αλλά όλες αυτές οι περιγραφές απλοποιηθεί σε μεγάλο βαθμό (ή βασίζονται σε μεγάλες εξαφανιστεί εφαρμογές πυρήνα).   

«Μέγεθος Διαδικασία» ως έννοια είναι τρομερά δύσκολο να γίνουν αντιληπτά στη γενική περίπτωση. Απαντήσεις σε συγκεκριμένες περιπτώσεις εξαρτάται σε μεγάλο βαθμό από την πραγματική εφαρμογή διαχείρισης μνήμης στο λειτουργικό σύστημα, και είναι σπάνια τόσο ικανοποιητικό όσο το καθαρό «μέγεθος διαδικασία» αντίληψη που υπάρχει στο μυαλό των περισσότερων χρηστών (και οι περισσότεροι developers).


Για παράδειγμα, κανένας από αυτούς τους αριθμούς (ούτε, πιθανότατα, οποιοσδήποτε συνδυασμός τους) μπορεί να χρησιμοποιηθεί για να σας πω ακριβώς πόσες τέτοιες διαδικασίες μπορεί να τρέξει ταυτόχρονα σε μια δεδομένη ποσότητα της ελεύθερης μνήμης. Αλλά πραγματικά, το καλύτερο στοίχημά σας είναι να έρθει κανείς από το σκοπό αυτό: γιατί θέλετε αυτόν τον αριθμό, και αυτό θα μπορείτε να το χρησιμοποιήσετε για; Δεδομένου ότι οι πληροφορίες, νομίζω ότι θα πάρετε περισσότερες χρήσιμες απαντήσεις. > 
> Ο λόγος είναι ότι υπάρχουν μειονεκτήματα από τη χρήση συμπιεστών EXE. Κυρίως:
> 
> 
> Κατά την εκκίνηση ενός συμπιεσμένου EXE / DLL, όλα του κώδικα αποσυμπιέζεται από την εικόνα δίσκου στη μνήμη σε ένα πέρασμα, το οποίο μπορεί να προκαλέσει αλώνισμα δίσκο, αν το σύστημα είναι χαμηλή μνήμη και αναγκάζεται να αποκτήσετε πρόσβαση στο αρχείο μετάθεσης. Σε αντίθεση, με ασυμπίεστο EXE / DLL, το λειτουργικό σύστημα διαθέτει μνήμη για σελίδες κώδικας για τη ζήτηση (δηλαδή, όταν εκτελούνται).
> 
> 
> Πολλαπλές περιπτώσεις ένα συμπιεσμένο EXE / DLL δημιουργήσετε πολλαπλές παρουσίες του κώδικα στη μνήμη. Εάν έχετε ένα συμπιεσμένο EXE που περιέχει 1 ΜΒ του κώδικα (πριν από τη συμπίεση) και ο χρήστης ξεκινά 5 περιπτώσεις από αυτό, περίπου 4 MB μνήμης σπαταλιέται. Ομοίως, εάν έχετε ένα αρχείο DLL που είναι 1 MB και χρησιμοποιείται από 5 εφαρμογές που εκτελούνται, περίπου 4 MB μνήμης σπαταλιέται. Με ασυμπίεστο EXE / DLL, κωδικός αποθηκεύεται μόνο στη μνήμη μία φορά και μοιράζεται μεταξύ των περιπτώσεων.
> 
> 
> 


<http://www.jrsoftware.org/striprlc.php#execomp> [Εδώ είναι μια άλλη λύση](http://code.google.com/p/vs-android/) , που ενσωματώνει πλήρως το NDK μέσα στο Visual Studio. Δεν makefiles. Συμπεριφέρεται σαν μια σωστή έργο Win32: