Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is-ab:resurse:02 [2025/10/01 12:42]
adrian.ciobanu1906
poo-is-ab:resurse:02 [2025/10/20 22:04] (current)
razvan.cristea0106 [Depanare în modulul debug din Visual Studio Code]
Line 1: Line 1:
-===== Startup guide - WSL, VSC si GitHub =====+===== Startup guide - VSC, WSL și GitHub =====
  
 **Autor: Dănuț Ciobanu** **Autor: Dănuț Ciobanu**
Line 5: Line 5:
 ===== Introducere ===== ===== Introducere =====
  
-Pentru acest curs, folosirea WSL (Windows Subsystem for Linux) și Visual Studio Code (VS Code) vă va ajuta enorm. Gândiți-vă la această combinație ca la un banc de lucru universal, care vă asigură că toți veți lucra într-un mediu identic, standardizat,​ la fel ca profesioniștii. Cu WSL, chiar dacă aveți Windows, veți putea rula un mediu Linux autentic, eliminând astfel problemele de compatibilitate și diferențele de configurare dintre voi. Veți avea acces direct la aceleași unelte și compilatoare (cum ar fi G++ pentru C++) pe care le veți întâlni și în industrie. În același timp, VS Code vă oferă o interfață modernă, prietenoasă și gratuită, unde puteți scrie și depana codul mult mai ușor.+Pentru acest laborator, folosirea WSL (Windows Subsystem for Linux) și Visual Studio Code (VS Code) vă va ajuta enorm. Gândiți-vă la această combinație ca la un banc de lucru universal, care vă asigură că toți veți lucra într-un mediu identic, standardizat,​ la fel ca profesioniștii. Cu WSL, chiar dacă aveți Windows, veți putea rula un mediu Linux autentic, eliminând astfel problemele de compatibilitate și diferențele de configurare dintre voi. Veți avea acces direct la aceleași unelte și compilatoare (cum ar fi G++ pentru C++) pe care le veți întâlni și în industrie. În același timp, VS Code vă oferă o interfață modernă, prietenoasă și gratuită, unde puteți scrie și depana codul mult mai ușor.
  
 ==== Pasul 1 - Instalarea WSL ==== ==== Pasul 1 - Instalarea WSL ====
Line 90: Line 90:
 Acum aceste setări vor fi salvate global pentru acest utilizator pentru comenzile următoare de Git. Acum aceste setări vor fi salvate global pentru acest utilizator pentru comenzile următoare de Git.
  
-==== Pasul 5 - Primul repository și încarcare pe GitHub ​====+==== Pasul 5 - Primul repository și cod ====
  
 Intrați pe [[https://​github.com/​|GitHub]] și apăsați pe butonul de "​+"​ din dreapta-sus:​ Intrați pe [[https://​github.com/​|GitHub]] și apăsați pe butonul de "​+"​ din dreapta-sus:​
Line 96: Line 96:
 {{ :​poo-is-ab:​resurse:​github_new_repo.png?​direct&​600 |}} {{ :​poo-is-ab:​resurse:​github_new_repo.png?​direct&​600 |}}
  
-Apoi dați-i un nume și recomandat este să îl faceți privat atâta timp cât nu vreți ca oricine extern să vă poate vedea repository-ul respectiv și salvați-l:+Apoi dați-i un nume și recomandat este să îl faceți privat atâta timp cât nu vreți ca oricine extern să vă poată ​vedea repository-ul respectiv și salvați-l:
  
 {{ :​poo-is-ab:​resurse:​repos_settings.png?​direct&​600 |}} {{ :​poo-is-ab:​resurse:​repos_settings.png?​direct&​600 |}}
Line 103: Line 103:
  
 {{ :​poo-is-ab:​resurse:​github_ssh_repo.png?​direct&​600 |}} {{ :​poo-is-ab:​resurse:​github_ssh_repo.png?​direct&​600 |}}
 +
 +Revenind în Visual Studio Code, dați click pe "​**File**"​ din stânga-sus și pe "​**Open Folder...**"​ apoi selectați folderul unde doriți sa lucrați:
 +
 +{{ :​poo-is-ab:​resurse:​vsc_open_folder.png?​direct&​600 |}}
 +
 +**ATENȚIE: Acum interfața s-a resetat și terminalul de WSL precedent s-a închis deci TREBUIE SĂ NE AUTENTIFICĂM PE PROFIULUL PERSONAL DIN NOU**
 +
 +Dați click pe "​Terminal"​ în stânga sus și apoi pe "New Terminal"​ pentru a-l redeschide:
 +
 +{{ :​poo-is-ab:​resurse:​vsc_new_terminal2.png?​direct&​600 |}}
 +
 +În poza de mai sus se observă 2 lucruri importante:
 +  - **Utilizatorul s-a resetat la cel default, autentificarea este necesară**
 +  - Lângă combinația numeUtilizator@numeDispozitiv se poate vedea, cu albastru, path-ul către folderul curent, deci deja suntem în folderul dorit după ce am dat "Open Folder..."​ înainte, e bine
 +
 +Următorul pas este clonarea repository-ului creat pe GitHub pe dispozitivul local. Asta se realizează folosind comanda ''​%%git clone linkSshCopiatAnterior%%''​. "Git clone" este practic o succesiune de 4 comenzi individuale de Git:
 +  * **git init** -> creează repository-ul local
 +  * **git remote add** -> adaugă link-ul către repository-ul de pe GitHub
 +  * **git fetch** -> scoate toate modificările aduse repository-ului de pe GitHub
 +  * **git checkout** -> creează efectiv fișierele pe dispozitivul local
 +
 +**ATENȚIE: deci nu mai este nevoie sa rulăm ''​%%git init%%''​ separat.**
 +
 +{{ :​poo-is-ab:​resurse:​git_clone_bun.png?​direct&​600 |}}
 +
 +În poza de mai sus se observă 3 lucruri importante, din nou:
 +  - **Când s-a realizat clonarea, S-A CREAT UN FOLDER NOU CU DENUMIREA ACESTUI REPOSITORY**
 +  - Noi trebuie să lucrăm în folderul ce conține "​**.git**"​ deci trebuie sa folosim comanda ''​%%cd%%''​ pentru a ne muta în directorul corespunzător și în WSL -> Repository-ul folosit de mine se numește "​LabOCW"​ și se poate vedea comanda ''​%%cd LabOCW%%''​ pentru a mă afla în folderul corect pentru când va fi necesară compilarea și rularea fișierelor
 +  - La prima conectare prin SSH, este necesară adăugarea domeniului "​github.com"​ în lista de "gaze cunoscute"​ ("​known hosts" în negleză) pentru a putea facilita accesul în viitor. Asta se realizează scriind "​**yes**"​ când se cere.
 +
 +{{ :​poo-is-ab:​resurse:​small_test_bun.png?​direct&​600 |}}
 +
 +În poza de mai sus:
 +  * Am creat 3 fișiere folosind comanda ''​%%touch%%''​ direct din terminalul WSL pentru a mă asigura că sunt create unde trebuie și nu într-un folder superior
 +  * Am scris un cod foarte simplu strict pentru a exemplifica comenzile de rulare si executare a codului direct din terminal
 +  * Se poate observa că cele 3 fișiere acum sunt verzi și apare "​U"​ lângă ele, asta înseamnă că sunt în folderul potrivit și Git-ul detecteaza modificări
 +
 +Pentru a compila codul scris, voi folosi comanda ''​%%g++ functions.cpp main.cpp -o exec%%''​. Pe bucăți, reprezintă:​
 +  - **g++** este compilatorul de cod C++ instalat în primii pași
 +  - **functions.cpp main.cpp** reprezintă lista de fișiere .cpp ce vor fi compilate (**ATENȚIE doar fișierele .cpp se compilează,​ fișierele .h se includ pentru referințe ce trebuie transmise între fișiere, ACESTEA NU SE COMPILEAZĂ**)
 +  - **-o** reprezintă opțiunea pentru a crea un executabil ce poate fi rulat
 +  - **exec** numele executabilului
 +
 +Pentru a rula executabilul se folosește sintaxa ''​%%./​numeFișier%%'',​ care este general valabilă în Linux pentru a rula fișiere ce pot fi executate. În cazul nostru: ''​%%./​exec%%''​.
 +
 +{{ :​poo-is-ab:​resurse:​exec_test.png?​direct&​600 |}}
 +
 +==== Pasul 6 - Încărcare pe GitHub ====
 +
 +Pentru a realiza trimiterea fișierelor către repository din GitHub trebuie executate următoarele comenzi:
 +  - **git add fișier** -> se adaugă fiecare fișier ​
 +  - **git commit -m "​mesaj"​** -> se pregătesc fișierele pentru commit împreună cu un mesaj relevant
 +  - **git status** -> e o preferință personală pentru a verifica dacă am uitat fișiere și că totul este în regulă
 +  - **git push** -> deoarece am clonat prin SSH, toate informațiile necesare au fost primite încă de la început si toate modificările adăugate în commit pot fi "​împinse"​ pe GitHub direct, fără parole sau alte configurații necesare
 +
 +Concret:
 +
 +{{ :​poo-is-ab:​resurse:​git_example.png?​direct&​600 |}}
 +
 +Și rezultatul de pe GitHub:
 +
 +{{ :​poo-is-ab:​resurse:​github_repo_commited.png?​direct&​600 |}}
 +
 +Se poate vedea că fișierele au fost încărcate cu succes și cu mesajul corespunzător.
 +
 +===== Depanare în modulul debug din Visual Studio Code =====
 +
 +În general nu ne putem da seama, de problemele pe care codul nostru le are doar uitându-ne la el și atunci optăm la varianta de a face debug. Debug înseamnă să rulăm linie cu linie codul scris de noi sau de alte persoane pentru a identifica probleme care cauzează un comportament care nu coincide cu așteptările pe care le avem în mod normal.
 +
 +Deși Visual Studio Code nu este un IDE (Integrated Development Environment) pentru că nu are un compilator preinstalat,​ ne oferă totuși posibilitatea de a face debugging, dar va trebui să îl configurăm puțin pentru a putea beneficia de acest "​lux"​.
 +
 +În Visual Studio Code mergem la extensii și căutăm **C/C++ Runner** și pe urmă o instalăm.
 +
 +{{ :​poo-is-ab:​resurse:​c_runner.jpeg?​direct400 |}}
 +
 +De asemenea pentru înfrumusețarea editorului de text vom instala și extensia **vscode-icons**. După instalare vom alege opțiunea **Set File Icon Theme** pentru a o activa.
 +
 +{{ :​poo-is-ab:​resurse:​vscode_icons.jpeg?​direct&​800 |}}
 +
 +După instalarea celor două extensii interfața grafică ar trebui să arate în felul următor:
 +
 +{{ :​poo-is-ab:​resurse:​ui-vscode-post-install.jpeg?​direct&​800 |}}
 +
 +<note tip>​Pentru utilizatorii de Windows este necesară instalarea MinGW chiar dacă compilează codul pe WSL. Se recomandă urmarea pașilor din tutorialul de [[https://​www.youtube.com/​watch?​v=JsO58opI3SQ|aici]].
 +
 +După ce ați urmat toți pașii din tutorial trebuie să instalați compilatorul **gdb**, care vă ajută să rulați cod de C/C++ pe Windows. Pentru aceasta trebuie rulată comanda ''​**mingw-get.exe install gdb**''​ direct în **Command Prompt**.
 +</​note>​
 +
 +{{ :​poo-is-ab:​resurse:​mingw_gdb_install.jpeg?​direct&​700 |}}
 +
 +Dacă primiți eroarea din imagine însemnă că ați instalat compilatorul în trecut, altfel veți vedea cum se instalează efectiv compilatorul în câteva secunde în terminal.
 +
 +<​note>​Utilizatorii care folosesc **Linux** ca și sistem de operare principal **nu** trebuie să instaleze MinGW-ul, aceștia trebuie **doar** să instaleze extensiile menționate anterior, deoarece pe Linux gdb-ul este preinstalat odată cu g++-ul.</​note>​
 +
 +Pentru a folosi efectiv debugger-ul trebuie să punem breakpoint-uri pe liniile din cod.
 +
 +{{ :​poo-is-ab:​resurse:​breakpoint.jpeg?​direct&​800 |}}
 +
 +Acum tot ce mai trebuie să facem este să compilăm codul folosind extensia.
 +
 +{{ :​poo-is-ab:​resurse:​build.jpeg?​direct&​600 |}}
 +
 +În urma compilării ar trebui să se creeze un director automat de build ca în imaginea de mai jos.
 +
 +{{ :​poo-is-ab:​resurse:​build_result.jpeg?​direct&​200 |}}
 +
 +Iar acum putem apăsa **F5** pentru a rula în modul debug.
 +
 +{{ :​poo-is-ab:​resurse:​run_debug_mode.jpeg?​direct&​800 |}}
 +
 +<​note>​Pentru mai multe detalii despre cum se poate rula și depana în modulul debug o aplicație scrisă în C/C++ recomandăm citirea documentației oficiale care se poate accesa de [[https://​code.visualstudio.com/​docs/​debugtest/​debugging#​_debug-actions|aici]]. </​note>​
poo-is-ab/resurse/02.1759311740.txt.gz · Last modified: 2025/10/01 12:42 by adrian.ciobanu1906
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0