Fjernbygging av C++ over VPN: hald verktøykjeda på verten
Å montera delinga er ikkje det same som å byggja eksternt. Sjekk kva vert som svarar, kva kompilator som køyrer, og kvar debuggeren og nettverket ligg.
Delinga blir montert, editoren opnar fila, og bygget køyrer framleis på den berbare. Ingenting feilar, og nettopp det gjer det forvirrande. Ein ekstern sti er ikkje ei ekstern verktøykjede, og ein editor som kan lesa ei fil gjennom ei montering, kallar gjerne den lokale kompilatoren på henne. Løysinga er å flytta arbeidsområdet, ikkje berre byta.
Ei montert mappe er ikkje eit arbeidsområde
Montering over SSH eller SMB gir deg ein sti. Om kompilatoren, byggjesystemet og debuggeren kjem frå fjernsida, avheng av kvar editoren vel å køyra dei. Mange oppsett les eksterne filer og kompilerer dei lokalt, og feilar så på ein header som berre finst på serveren.
Symtomet er subtilt: bygget lykkast med delvise resultat, eller bryt på ein include-sti som ser rett ut i editoren.
Prov kva vert som svarar
Kopla til med ei ekte ekstern økt i staden for ei montering, og køyr deretter tre skriveverna kommandoar i terminalen økta gir deg. VS Codes SSH-rettleing dokumenterer at ein terminal i eit tilkopla eksternt vindauge køyrer på den eksterne verten, og at same økta ber feilsøkinga. Be om godkjenning for fjernkomponentane fyrst viss organisasjonen avgrensar dei.
hostname namngir maskina du er på, pwd viser kvar arbeidsområdet faktisk ligg, og command -v c++ skriv ut kompilatoren skallet ville køyrt. Alle tre svara bør skildra serveren, ikkje den berbare.
Dei provar ikkje at versjonen eller byggjekonfigurasjonen er rett. Samanlikn det med prosjektet sine eigne instruksar som eit eige steg.
Fylg éi endring gjennom bygg og feilsøking
Gjer ei lita endring i det eksterne arbeidsområdet og lagra henne der. Køyr det dokumenterte bygget frå same mappa og stadfest at utdataa speglar endringa di og ikkje ein eldre kopi ein annan stad. Start deretter debuggeren gjennom same eksterne økta, med binærstien og arbeidsmappa peikande inn i byggjetreet til serveren. Samsvarande kjeldebanar betyr noko, fordi ein debugger som løyser endringa di til ein sti på den berbare, feilsøkjer ei anna fil.
Viss feilsøkingsmålet rapporterer stiar som byrjar med den lokale heimemappa di, tenkjer startkonfigurasjonen framleis lokalt.
Nettverksavhengnader blir verande på verten
Ei pakkehenting, ein git-operasjon eller ein testkøyring starta på byggjeverten brukar nettverket og påloggingsinformasjonen til den verten, ikkje VPN-økta til den berbare. At den berbare når eit privat pakkespegel, seier ingenting om korvidt serveren kan. Viss bygget treng eit register, treng serveren ein rute dit, og det er ein brannmursamtale, ikkje ei editorinnstilling.
Det same gjeld omvendt for testapplikasjonar. Å nå ein teneste på serveren frå nettlesaren er ei eiga tilkopling som krev ein godkjend privat sti eller ei avgrensa videresending, ikkje ein open lyttar.
Kopla frå utan å mista arbeidet
Lagra og commit, eller registrer i det minste arbeidstreet, før tilkoplinga fell. Ei ekstern redigeringsøkt lovar ikkje at eit køyrande bygg eller ein ulagra buffer overlever eit nettverksbrot. For alt som må leva lenger enn økta di, bruk den støtta jobb- eller øktflyten til prosjektet.
Arbeidsdelinga er då tydeleg: den berbare er eit grensesnitt, serveren eig arbeidsområdet og verktøykjeda, og VPN-en leverer ruta. Å flytta filer og å flytta bygget er to separate avgjerder.