- w engine/example w pliku
CMakeLists.txt
w linii ~20 zaczynającej się odSET(CMAKE_CXX_FLAGS
zamień końcówkę linii... -nostdinc++"
na... -nostdinc++ -g"
- zrób to samo ale w silniku (
engine/src
) około linii 44 - ponownie skompiluj silnik i swoją funkcję klienta
- z konsoli zainstaluj narzędzie gdb:
sudo apt-get install gdb
- ze skryptu uruchamiającego silnik
run.sh
skopiuj linię zaczynającą się odexport
i wpisz w aktywnym oknie konsoli - ze skryptu uruchamiającego skopiuj swoje argumenty (całość tekstu po
./GameEngine
) - pozostając w folderze silnika, w konsoli odpal gdb:
gdb GameEngine
- następnie wpisz
run <twoje_argumenty>
(np.run --fpLibPath=../example/libclientA.so --fpFcnName=updatePlayer --clientsPrint
- jeżeli wszystkie kroki zostały wykonane poprawnie to przy wystąpieniu błędu dostaniesz informację o dokładnym miejscu w kodzie, w którym ten błąd wystąpił
- Przed uruchomieniem procesu (
run ...
) można wpisać np.break client.cpp:95
- gdb za pierwszym razem może zadać pytanie typu
No source file named client.cpp. Make breakpoint pending on future shared library? (y or [n])
, należy na nie odpowiedźy
- dostaniesz informację zwrotną np.
Breakpoint 1 (client.cpp:95) pending
, gdzie1
to jego numer - wtedy można już uruchomić proces (patrz wyżej pkt. 8)
- w miejscu dojścia do breakpointu wykonywany proces się zatrzyma, wtedy można użyć innych komend do np sprawdzenia wartości różnych zmiennych itd (patrz niżej -
Więcej komend
) - aby wznowić uruchamianie programu można np. wpisać
continue
- jeżeli breakpoint nie jest już potrzebny to można go usunąć poprzez
delete <numer_breakpointa>
npdelete 1