Na ovoj stranici

Otklanjanje pogrešaka

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 p Qt Quick a - 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, CDB debugger na sustavu Windows morate sami instalirati) ili jer Qt Creator ne podržava instaliranu verziju. Na primjer, kada vaš sustav nema instaliran GDB ili je instalirana verzija zastarjela, a vi želite umjesto toga 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 pogrešaka 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 putanje CDB-a.

Pokretanje otklanjivača pogrešaka

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

  • Pokrenite interno za otklanjanje pogrešaka aplikacija razvijenih unutar Qt Creator-a, kao što je aplikacija temeljena na Qt Widgets-u. Ovo 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 verziji Windowsa, GDB motor se pokreće u načinu pokretanja interne sesije ( start internal mode). Za QML aplikaciju koja koristi C++ dodatke pokreće se mješoviti QML/C++ motor, pri čemu GDB i daljinsko otklanjanje pogrešaka putem GDB poslužitelja obrađuju 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:

  • Obični način otklanjanja pogrešaka lokalno pokrenutih procesa koji ne zahtijevaju konzolni unos.
  • 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 za pregled i promjenu varijabli, postavljanje novih prekidnih točaka ili uklanjanje 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.

Za prekidanje pokrenute C++ aplikacije 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, možete pregledati određene podatke u otklanjivaču pogrešaka. Dostupnost podataka ovisi o postavkama kompajlera 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 raditi nešto 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 otklanjanje pogrešaka na daljinu. U uobičajenom slučaju, kada udaljeni računalo već ima instaliran server za otklanjanje pogrešaka poput GDBservera i kada je daljinska izvedba aplikacije već postavljena i funkcionira 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 asocijativni 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 prekide, 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 : Uvodnik: Debugging C++, Kako: Debugging, 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.