Απομακρυσμένη μεταγλώττιση C++ μέσω VPN: κρατήστε την αλυσίδα εργαλείων στον κόμβο
Η προσάρτηση του κοινόχρηστου φακέλου δεν είναι το ίδιο με την απομακρυσμένη μεταγλώττιση. Ελέγξτε ποιος κόμβος απαντά, ποιος μεταγλωττιστής εκτελείται και πού ζουν ο αποσφαλματωτής και το δίκτυο.
Ο κοινόχρηστος φάκελος προσαρτάται, ο επεξεργαστής ανοίγει το αρχείο και η μεταγλώττιση εξακολουθεί να εκτελείται στον φορητό. Τίποτα δεν βγάζει σφάλμα, και αυτό ακριβώς το κάνει μπερδεμένο. Μια απομακρυσμένη διαδρομή δεν είναι απομακρυσμένη αλυσίδα εργαλείων, και ένας επεξεργαστής που μπορεί να διαβάσει ένα αρχείο μέσω προσάρτησης θα καλέσει πρόθυμα τον τοπικό μεταγλωττιστή πάνω του. Η λύση είναι να μετακινήσετε τον χώρο εργασίας, όχι μόνο τα byte.
Ένας προσαρτημένος κατάλογος δεν είναι χώρος εργασίας
Η προσάρτηση μέσω SSH ή SMB σας δίνει μια διαδρομή. Το αν ο μεταγλωττιστής, το σύστημα μεταγλώττισης και ο αποσφαλματωτής έρχονται από την απομακρυσμένη πλευρά εξαρτάται από το πού αποφασίζει ο επεξεργαστής να τα εκτελέσει. Πολλές ρυθμίσεις διαβάζουν απομακρυσμένα αρχεία και τα μεταγλωττίζουν τοπικά και μετά αποτυγχάνουν σε ένα αρχείο κεφαλίδας που υπάρχει μόνο στον διακομιστή.
Το σύμπτωμα είναι λεπτό: η μεταγλώττιση πετυχαίνει με μερικά αποτελέσματα ή σπάει σε μια διαδρομή include που φαίνεται σωστή στον επεξεργαστή.
Αποδείξτε ποιος κόμβος απαντά
Συνδεθείτε με πραγματική απομακρυσμένη συνεδρία αντί για προσάρτηση και μετά εκτελέστε τρεις εντολές μόνο ανάγνωσης στο τερματικό που σας δίνει αυτή η συνεδρία. Ο οδηγός SSH του VS Code τεκμηριώνει ότι ένα τερματικό σε συνδεδεμένο απομακρυσμένο παράθυρο εκτελείται στον απομακρυσμένο κόμβο και ότι η ίδια συνεδρία μεταφέρει την αποσφαλμάτωση. Ζητήστε πρώτα έγκριση για τα απομακρυσμένα στοιχεία αν ο οργανισμός τα περιορίζει.
hostname ονομάζει το μηχάνημα στο οποίο βρίσκεστε, pwd δείχνει πού ζει πραγματικά ο χώρος εργασίας και command -v c++ εκτυπώνει τον μεταγλωττιστή που θα εκτελούσε το κέλυφος. Και οι τρεις απαντήσεις πρέπει να περιγράφουν τον διακομιστή, όχι τον φορητό.
Δεν αποδεικνύουν ότι η έκδοση ή η ρύθμιση μεταγλώττισης είναι σωστή. Συγκρίνετε το με τις οδηγίες του ίδιου του έργου ως ξεχωριστό βήμα.
Παρακολουθήστε μια αλλαγή μέσα από μεταγλώττιση και αποσφαλμάτωση
Κάντε μια μικρή αλλαγή στον απομακρυσμένο χώρο εργασίας και αποθηκεύστε την εκεί. Εκτελέστε τη τεκμηριωμένη μεταγλώττιση από τον ίδιο κατάλογο και επιβεβαιώστε ότι η έξοδος αντανακλά την αλλαγή σας και όχι ένα παλαιότερο αντίγραφο αλλού. Μετά ξεκινήστε τον αποσφαλματωτή μέσω της ίδιας απομακρυσμένης συνεδρίας, με τη διαδρομή του δυαδικού και τον κατάλογο εργασίας να δείχνουν στο δέντρο μεταγλώττισης του διακομιστή. Η αντιστοιχία διαδρομών πηγής έχει σημασία, γιατί ένας αποσφαλματωτής που ανάγει την αλλαγή σας σε διαδρομή του φορητού αποσφαλματώνει άλλο αρχείο.
Αν ο στόχος αποσφαλμάτωσης αναφέρει διαδρομές που ξεκινούν από τον τοπικό σας κατάλογο χρήστη, η ρύθμιση εκκίνησης σκέφτεται ακόμη τοπικά.
Οι εξαρτήσεις δικτύου μένουν στον κόμβο
Μια λήψη πακέτου, μια πράξη git ή μια εκτέλεση δοκιμών που ξεκινά στον κόμβο μεταγλώττισης χρησιμοποιεί το δίκτυο και τα διαπιστευτήρια εκείνου του κόμβου, όχι τη συνεδρία VPN του φορητού σας. Το ότι ο φορητός φτάνει σε έναν ιδιωτικό καθρέφτη πακέτων δεν λέει τίποτα για το αν μπορεί ο διακομιστής. Αν η μεταγλώττιση χρειάζεται μητρώο, ο διακομιστής χρειάζεται διαδρομή προς αυτό, και αυτή είναι συζήτηση τείχους προστασίας, όχι ρύθμιση επεξεργαστή.
Το ίδιο ισχύει αντίστροφα για εφαρμογές δοκιμών. Το να φτάνετε σε μια υπηρεσία στον διακομιστή από το πρόγραμμα περιήγησης είναι ξεχωριστή σύνδεση που χρειάζεται εγκεκριμένη ιδιωτική διαδρομή ή περιορισμένη προώθηση, όχι ανοιχτό ακροατή.
Αποσυνδεθείτε χωρίς να χάσετε τη δουλειά
Αποθηκεύστε και κάντε commit, ή τουλάχιστον καταγράψτε το δέντρο εργασίας, πριν πέσει η σύνδεση. Μια απομακρυσμένη συνεδρία επεξεργασίας δεν υπόσχεται ότι μια μεταγλώττιση σε εξέλιξη ή ένα μη αποθηκευμένο buffer θα επιβιώσει μιας διακοπής δικτύου. Για ό,τι πρέπει να ζήσει περισσότερο από τη συνεδρία σας, χρησιμοποιήστε τη ροή εργασιών ή συνεδριών που υποστηρίζει το έργο.
Η κατανομή εργασίας είναι τότε ρητή: ο φορητός είναι διεπαφή, ο διακομιστής κατέχει τον χώρο εργασίας και την αλυσίδα εργαλείων, και το VPN παρέχει τη διαδρομή. Το να μετακινείτε αρχεία και το να μετακινείτε τη μεταγλώττιση είναι δύο ξεχωριστές αποφάσεις.