Na ovoj stranici

Debugiranje

Kako: Debugiranje

Možete koristiti otklanjivače pogrešaka za:

  • Debugiranje izvršnih binarnih datoteka - GNU Symbolic Debugger (GDB), Microsoft Console Debugger (CDB) i otklanjivač pogrešaka projekta virtualne mašine niske razine (LLVM), LLDB.
  • Debugiranje QML i JavaScript koda te aplikacija za Qt Quick - QML/JavaScript debugger.
  • Debugiranje izvornog koda Pythona - PDB.

Postavljanje otklanjivača pogrešaka

Qt Creator automatski odabire odgovarajući otklanjivač pogrešaka za svaki komplet među onima pronađenima na vašem sustavu. Možete odabrati drugi komplet. Da biste specificirali otklanjivač pogrešaka i kompajler koji ćete koristiti za svaki komplet, idite na Preferences > Kits.

Preferencije kompleta

Debugger morate postaviti samo ako automatska postavka ne uspije jer nedostaje debugger (na primjer, sami morate instalirati CDB debugger na sustavu Windows) ili jer Qt Creator ne podržava instaliranu verziju. Na primjer, kada vaš sustav nema instaliran GDB ili je instalirana verzija zastarjela, a vi umjesto toga želite koristiti lokalno instaliranu zamjenu.

Da biste promijenili otklanjivač u automatski otkrivenom kompletu, idite na Preferences > Kits > Clone kako biste stvorili kopiju kompleta i promijenili parametre u kloniranom kompletu. Pobrinite se da ste omogućili klonirani komplet za svoj projekt.

Prikaz više otklonitelja pogrešaka

Ako debugger koji želite koristiti nije automatski otkriven, idite na Preferences > Kits > Debuggers > Add kako biste ga dodali.

 kartica Debuggeri u postavkama kompleta

Za osvježavanje popisa automatski otkrivenih otklonitelja, odaberite Re-detect.

Da biste koristili alate za otklanjanje pogrešaka za Windows, morate ih instalirati. Po želji možete postaviti Microsoft Symbol Server ako trebate simboličke informacije za Microsoftove module koje se ne mogu pronaći lokalno.

Za više informacija pogledajte podržane otklanjivače pogrešaka i staze CDB-a.

Pokretanje otklanjivača pogrešaka

Debugeri rade u različitim načinima rada ovisno o tome gdje i kako pokrenete i pokrenete proces podvrgnut debugiranju. Neki su načini dostupni samo za određeni operativni sustav ili platformu:

  • Qt WidgetsPokrenite internu opciju za otklanjanje pogrešaka aplikacija razvijenih unutar Qt Creator-a, kao što je aplikacija temeljena na Qt-u. To je zadani način pokretanja za većinu projekata, uključujući sve projekte koji koriste desktop verziju Qt-a i projekte u čistom C++-u.
  • Pokretanje izvana za pokretanje i otklanjanje pogrešaka procesa bez odgovarajuće konfiguracije Qt Creator projekta, bilo lokalno ili na udaljenom računalu.
  • Prikači se na procese za otklanjanje pogrešaka koji su već pokrenuti i rade izvan Qt Creator, bilo lokalno ili na udaljenom računalu.
  • Core za otklanjanje pogrešaka srušenih procesa na Unixu.
  • Post-mortem za otklanjanje pogrešaka u srušenim procesima na Windowsu.

Općenito, tipke F5 i gumb Start Debugging of Startup Project pokreću način rada koji odgovara kontekstu. Dakle, za C++ aplikaciju koja koristi MinGW alatni lanac namijenjen desktop Windowsu, GDB motor se pokreće u načinu pokretanja interne sesije. Za QML aplikaciju koja koristi C++ dodatke, pokreće se mješoviti QML/C++ motor, pri čemu GDB i udaljeno otklanjanje pogrešaka putem GDB poslužitelja rješavaju C++ dijelove.

Promijenite parametre konfiguracije pokretanja (kao što je Run in Terminal) u postavkama pokretanja projekta ili odaberite opcije iz izbornika Debug > Start Debugging kako biste odabrali druge načine rada.

GDB načini rada

GDB otklanjivač pogrešaka radi u različitim načinima rada kako bi se prilagodio raznolikosti podržanih platformi i okruženja:

  • Jednostavan način otklanja pogrešaka kod lokalno pokrenutih procesa kojima nije potreban unos u konzolu.
  • Terminalni način rada otklanja greške u lokalno pokrenutim procesima kojima je potrebna konzola.
  • Način prikačivanja otklanja greške u lokalnim procesima pokrenutima izvan Qt Creator-a.
  • Core način otklanja greške u core datotekama generiranim pri padu programa.
  • Daljinski način rada komunicira s GDB poslužiteljem koji radi na Linuxu.

Zaustavljanje aplikacija

Možete prekinuti aktivnu aplikaciju prije nego što završi ili da biste saznali zašto aplikacija ne radi ispravno. Postavite prekidne točke kako biste zaustavili aplikaciju radi pregledavanja i mijenjanja varijabli, postavljanja novih prekidnih točaka ili uklanjanja starih, a zatim nastavite s izvršavanjem aplikacije.

Jednom kada aplikacija počne raditi pod kontrolom otklanjivača pogrešaka, ona se ponaša i radi kao i obično.

Da biste prekinuli radnu C++ aplikaciju, idite na Debug > Interrupt. Debugger automatski prekida aplikaciju kada dođe do prekidne točke.

Kada se aplikacija zaustavi, Qt Creator:

Možete pregledavati i mijenjati varijable, postavljati ili uklanjati prekide, a zatim nastaviti izvršavanje aplikacije.

Pregledavanje podataka

Kada se aplikacija zaustavi, u otklanjivaču pogrešaka možete pregledati određene podatke. Dostupnost podataka ovisi o postavkama prevoditelja prilikom kompajliranja aplikacije i o točnoj lokaciji na kojoj se aplikacija zaustavila.

Neočekivani događaji nazivaju se iznimke i otklanjivač pogrešaka može zaustaviti aplikaciju kada se pojave. Odlazak na lokaciju u kodu na kojoj se iznimka dogodila pomaže vam istražiti problem i pronaći načine za njegovo rješavanje.

Ako imate varijablu koja prikazuje tekst, ali aplikacija ga ne prikazuje ispravno, vaši bi podaci mogli biti netočni ili bi kod koji postavlja tekst za prikaz mogao nešto raditi pogrešno. Možete prolaziti kroz kod korak po korak i ispitivati promjene varijable kako biste otkrili gdje se pogreška događa.

Sljedeći videozapis prikazuje kako ispitati vrijednosti varijabli:

Daljinsko otklanjanje pogrešaka

Qt Creator omogućuje jednostavno daljinsko otklanjanje pogrešaka. U uobičajenom slučaju, kada daljinski računal ima već instaliran poslužitelj za otklanjanje pogrešaka poput GDBservera i kada je daljinsko pokretanje aplikacije već postavljeno i radi odabirom gumba Run (ili Ctrl+R), otklanjanje pogrešaka može se pokrenuti odabirom gumba Debug (ili F5).

U tom slučaju, Qt Creator automatski pokreće i povezuje poslužitelj za otklanjanje pogrešaka i aplikaciju na udaljenom računalu te stvarni otklanjač pogrešaka na razvojnom hostu u ispravnom redoslijedu.

Za neke iznimne slučajeve u kojima ova potpuno automatizirana postavka i izvođenje daljinskog otklanjanja pogrešaka nisu mogući, Qt Creator nudi poluautomatska rješenja, pogledajte Otklanjanje pogrešaka na daljinu pomoću GDB-a i Otklanjanje pogrešaka na daljinu pomoću CDB-a.

Korištenje pomoćnika za otklanjanje pogrešaka

Kako bi prikazao složene strukture, kao što su QObjects ili asociativni kontejneri, na jasan i sažet način, Qt Creator koristi Python skripte koje se nazivaju pomoćnici za otklanjanje pogrešaka.

Qt Creator dolazi s pomoćnicima za otklanjanje pogrešaka za više od 200 najpopularnijih Qt klasa, standardnih C++ spremnika i pametnih pokazivača, čime se izravno zadovoljavaju uobičajene potrebe programera C++ aplikacija.

Možete prilagoditi i dodati pomoćnike za otklanjanje pogrešaka.

QML i Qt Quick

Prilikom otklanjanja pogrešaka u Qt Quick aplikaciji možete pregledati stanje aplikacije dok otklanjate pogreške u JavaScript funkcijama. Možete postavljati prekidne točke, pregledavati trag poziva i ispitivati lokalne varijable i izraze. Dok aplikacija radi, možete pregledavati QML objekte i korisničke sučelje, kao i izvršavati JavaScript izraze.

Za više informacija pogledajte odjeljak Debugging Qt Quick projects i vodič Tutorial: Qt Quick debugging.

Vidi također : Učionica: Debugiranje C++, Kako: Debugiranje, Debugeri i Upravljanje kitovima.

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.