This shows you the differences between two versions of the page.
pa:halite-debugging [2022/03/14 10:41] radu.iacob |
pa:halite-debugging [2022/03/14 11:48] (current) radu.iacob |
||
---|---|---|---|
Line 3: | Line 3: | ||
- Instanțiati un proiect nou cu sursele voastre și executabilul engine-ului (halite). | - Instanțiati un proiect nou cu sursele voastre și executabilul engine-ului (halite). | ||
- In fisierul "MyBot.cpp" sau unde este functia main, introducem urmatoarele linii: | - In fisierul "MyBot.cpp" sau unde este functia main, introducem urmatoarele linii: | ||
- | * #include <zconf.h> | + | * //#include <zconf.h>// |
- | * inaintea functiei main: volatile int ready = 0; | + | * inaintea functiei main: //volatile int ready = 0;// |
- | * la inceputul functiei main: while (!ready) sleep(1); | + | * la inceputul functiei main: //while (!ready) sleep(1);// |
- In "CMakeLists.txt" ne asiguram ca vom compila cu -g in configuratia de Debug (si cu optimizari cand nu facem debug) | - In "CMakeLists.txt" ne asiguram ca vom compila cu -g in configuratia de Debug (si cu optimizari cand nu facem debug) | ||
* [[https://gist.github.com/johnthebrave/a14a109cfef9643ac48f2613aa97717c|Exemplu pentru starter-kit]] | * [[https://gist.github.com/johnthebrave/a14a109cfef9643ac48f2613aa97717c|Exemplu pentru starter-kit]] | ||
- | * Putem adauga un flag auxiliar (in exemplul de CMake l-am numit GDB_DEBUG) care va activa portiunea adaugata mai sus doar cand facem debug. | + | * Putem adăuga un flag auxiliar (in exemplul de CMake l-am numit GDB_DEBUG) care va activa porțiunea adaugată mai sus doar când facem debug. |
* [[https://gist.github.com/johnthebrave/3c5d39885a9598b5bf59695700ea081d|Exemplu MyBot.cpp]] | * [[https://gist.github.com/johnthebrave/3c5d39885a9598b5bf59695700ea081d|Exemplu MyBot.cpp]] | ||
- | - Facem o noua configuratie de rulare in CLion. | + | - Facem o noua configurație de rulare in CLion. |
* **Run -> Edit Configurations** | * **Run -> Edit Configurations** | ||
- | * Apasam pe **+**, apoi selectam **Application** | + | * Apăsam pe **+**, apoi selectam **Application** |
* Punem ce nume vrem (eg. **Debug**), la target lasam cum e (eg. **MyBot**), la executable selectam **halite** (executabilul engine-ului). | * Punem ce nume vrem (eg. **Debug**), la target lasam cum e (eg. **MyBot**), la executable selectam **halite** (executabilul engine-ului). | ||
* La **Program arguments** puteti pune ce ați pune daca ați executa ./halite din terminal (dimensiunea hartii, seed, botii rulati etc.). | * La **Program arguments** puteti pune ce ați pune daca ați executa ./halite din terminal (dimensiunea hartii, seed, botii rulati etc.). | ||
- | * Neaparat sa puneti flag-ul -t (pentru ca engine-ul sa ignore timeout-ul) | + | * Neapărat să puneți flag-ul -t (pentru ca engine-ul să ignore timeout-ul) |
- | * Botul vostru va avea calea cmake-build-debug/MyBot (sau in loc de MyBot ce nume are executabilul vostru in urma compilarii). | + | * Botul vostru va avea calea cmake-build-debug/MyBot (sau în loc de MyBot ce nume are executabilul vostru în urma compilării). |
* Exemplu: //-d "30 30" ./cmake-build-debug/MyBot ./cmake-build-debug/RandomBot -t// | * Exemplu: //-d "30 30" ./cmake-build-debug/MyBot ./cmake-build-debug/RandomBot -t// | ||
- O dată facută configurația, rulați și ar trebui să apară în terminalul din CLion că se pornește meciul, dar se blochează la inițializarea jucătorilor. Acum dati Ctrl+Alt+5 sau **Run -> Attach to Local Process** și căutați MyBot (sau numele executabilului botului vostru). | - O dată facută configurația, rulați și ar trebui să apară în terminalul din CLion că se pornește meciul, dar se blochează la inițializarea jucătorilor. Acum dati Ctrl+Alt+5 sau **Run -> Attach to Local Process** și căutați MyBot (sau numele executabilului botului vostru). | ||
Line 26: | Line 26: | ||
- | Recomandari: | + | **Recomandări**: |
+ | * **Asigurați-vă că porțiunea de cod de la linia 1 nu este activă în varianta finală.** | ||
* Rulati un singur bot in modul debug (cu liniile mentionate la punctul 1) pentru ca altfel trebuie sa dati attach la fiecare proces ca sa setati ready = 1 | * Rulati un singur bot in modul debug (cu liniile mentionate la punctul 1) pentru ca altfel trebuie sa dati attach la fiecare proces ca sa setati ready = 1 | ||
* Puteți seta conditii pentru breakpoint, astfel ca programul sa se oprească doar cand anumite variabile din cod au valorile potrivite (de exemplu sa se opreasca la un breakpoint doar dupa tura 200 a jocului) | * Puteți seta conditii pentru breakpoint, astfel ca programul sa se oprească doar cand anumite variabile din cod au valorile potrivite (de exemplu sa se opreasca la un breakpoint doar dupa tura 200 a jocului) | ||
* Daca vă puteți atașa la proces, dar breakpoint-uri ce sigur ar trebui să fie atinse, nu sunt atinse, sau programul pare că se oprește la altă linie, probabil ați uitat să scoateți -O2 sau să adaugați -g la flag-urile de compilare. | * Daca vă puteți atașa la proces, dar breakpoint-uri ce sigur ar trebui să fie atinse, nu sunt atinse, sau programul pare că se oprește la altă linie, probabil ați uitat să scoateți -O2 sau să adaugați -g la flag-urile de compilare. | ||