Dijagnosticirajte na daljinu pomoću GDB-a
U uobičajenom slučaju kada udaljeni računal ili spremnik već ima instaliran GDBserver i kada je udaljeno pokretanje aplikacije već postavljeno i radi odabirom gumba Run (ili Ctrl+R), možete pokrenuti udaljeno otklanjanje pogrešaka odabirom gumba Debug (ili F5).
U tom slučaju, Qt Creator pokreće i automatski povezuje debug poslužitelj i aplikaciju na udaljenom računalu te stvarni otklanjivač pogrešaka na razvojnom hostu u ispravnom redoslijedu.
Ovo je preporučena metoda.
Ako uvjeti za ovo automatizirano postavljanje nisu ispunjeni, ali vaša udaljena mašina može pokretati GDB poslužitelj (ili bilo koju kompatibilnu sondu koja koristi GDB serijski protokol), i dalje možete koristiti Qt Creator za otklanjanje pogrešaka u svojoj aplikaciji.
Aplikacija radi, SSH pristup udaljenom računalu je dostupan
Ako se želite spojiti na aplikaciju koja već radi na udaljenom računalu i debug poslužitelj se može pokrenuti putem SSH-a s lokalnog računala, idite na Debug > Start Debugging > Attach to running applications.
Aplikacija nije pokrenuta, terminalski pristup udaljenom računalu je dostupan
Ako se debug poslužitelj ne može pokrenuti putem SSH-a s lokalnog računala, provjerite dokumentaciju svog uređaja radi alternativnih načina pokretanja debug poslužitelja.
Ako imate pristup terminalu na udaljenom računalu i instaliran GDB poslužitelj, možete ručno prenijeti izvršnu datoteku na udaljeno računalo i pokrenuti gdbserver prosljeđivanjem broja priključka i izvršne datoteke:
gdbserver :1234 /path/to/executable
Zatim obično odgovara:
Process /path/to/executable created; pid = 5159 Listening on port 1234
Na lokalnom računalu na kojem se pokreće Qt Creator:
- Idite na Debug > Start Debugging > Attach to Running Debug Server.

- U Kit odaberite skup za izgradnju i pokretanje koji ćete koristiti za izgradnju projekta.
- U Server port unesite naziv udaljenog računala i broj porta koji ćete koristiti.
- U odjeljku Local executable navedite putanju do izvršne datoteke aplikacije na lokalnom računalu.
- U Command line arguments u navedite argumente naredbenog retka koji će se proslijediti izvršnoj datoteci.
- U Working directory u navedite radni direktorij. Zadano je to direktorij s rezultatom izgradnje.
- Odaberite Run in terminal za konzolne aplikacije.
- Odaberite Break at "main" da zaustavite otklanjivač pogrešaka na glavnoj funkciji.
- Odaberite Use target extended-remote to connect za uspostavljanje veze u
target extended-remote mode. U ovom načinu rada, kada se debugirana aplikacija zatvori ili se odvojite od nje, otklanjivač pogrešaka ostaje povezan s ciljem. Možete ponovno pokrenuti aplikaciju, spojiti se na pokrenutu aplikaciju ili koristiti naredbe monitora specifične za odredište. Na primjer, GDB se ne izlazi osim ako nije pozvan s opcijom--once, ali možete ga natjerati da izađe korištenjem naredbemonitor exit. - U Override SysRoot-u navedite putanju do
sysroot-a koji ćete koristiti umjesto zadanogsysroot-a. - U Init commands unesite naredbe koje će se izvršiti odmah nakon uspostavljanja veze s odredištem.
- U odjeljku Reset commands unesite naredbe koje će se izvršiti pri resetiranju veze s odredištem.
- U odjeljku Debug information navedite lokaciju za pohranu informacija o otklanjanju pogrešaka. Ne možete koristiti prazan put.
- U Override server channel u navedite komunikacijski kanal koji ćete koristiti, kao što je serijski priključak ili prilagođeni port.
- U Recent odaberite nedavnu konfiguraciju za korištenje.
- Odaberite OK za pokretanje otklanjanja pogrešaka.
Po zadanome se neaktivni GDB proces prekida nakon 40 sekundi. Za povećanje vremenskog ograničenja u načinu rada GDB timeout, idite na Preferences > Debugger > GDB.
Za više informacija o povezivanju u načinu target extended-remote u GDB-u pogledajte poglavlje Debugging with GDB: Connecting to a Remote Target.
Aplikacija radi, terminalski pristup udaljenom računalu i gdbserver su dostupni
Ovaj je slučaj gotovo identičan prethodnom odjeljku, osim što se gdbserver pokreće drugačije:
gdbserver --attach :1234 <PID of running application>
Koristite SSH port forwarding
Da biste omogućili otklanjanje pogrešaka na udaljenim ciljevima koji ne mogu izložiti GDB poslužiteljske priključke, mapirajte udaljene priključke na lokalne priključke pomoću SSH tuneliranja. Qt Creator automatski otkriva lokalne i udaljene priključke.
Za uključivanje prosljeđivanja SSH portova:
- Idite na Preferences > Devices.

- U odjeljku Device odaberite Remote Linux Device.
- Odaberite Use SSH port forwarding for debugging.
- Odaberite Apply.
Pokretanje GDB poslužitelja naredbom
Remote Debugger Ako želite automatizirati i trajno spremiti postavljanje GDB poslužitelja kao dio vašeg projekta (na primjer, imate skriptu koja pokreće gdbserver na udaljenom uređaju), dodajte konfiguraciju pokretanja udaljenog otklanjanja pogrešaka. Naredba za pokretanje automatski se izvršava svaki put kad pokrenete otklanjanje pogrešaka, pa ne morate ručno postavljati vezu.
Za dodavanje konfiguracije pokretanja udaljenog otklanjanja pogrešaka:
- Idite na Projects > Run Settings.
- Odaberite Add > Remote Debugger > Create.
- U odjeljku Command navedite skriptu ili naredbu koja uspostavlja vezu GDB poslužitelja.
- U Command line arguments u navedite argumente koje želite proslijediti naredbi pokretača.
- U Symbol file (local executable) navedite putanju do izvršne datoteke aplikacije na lokalnom računalu.
- U Server channel odaberite komunikacijski kanal koji ćete koristiti. Zadano je
tcp://127.0.0.1:1234. - Odaberite Break at "main" za zaustavljanje otklanjivača pogrešaka na glavnoj funkciji.
- Odaberite Run in terminal za konzolne aplikacije.
- Odaberite Use "target extended-remote" to connect za povezivanje u proširenom udaljenom načinu rada.
- Odaberite konfiguraciju pokretanja u odabiraču skupa alata i pritisnite F5 za pokretanje otklanjanja pogrešaka.
Vidi također Kako: Otklanjanje pogrešaka, Kako: Razvijanje za udaljeni Linux, GDB, Otklanjanje pogrešaka, Debugeri i Upravljanje setovima.
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.