Otklanjanje poteškoća u otklanjanju pogrešaka
Ovaj odjeljak navodi neke uobičajene probleme na koje možete naići tijekom otklanjanja pogrešaka i njihova rješenja.
Ne može se pokrenuti otklanjivač pogrešaka
Neke antivirusne aplikacije ne dopuštaju da dekera preuzmu podatke. Na primjer, na sustavu Windows pokretanje dekera može ne uspjeti s sljedećom porukom ako je Avira AntiVir instaliran na razvojnom računalu: Dekirani proces zaustavljen je jer je primio signal od operativnog sustava. Naziv signala:? značenje signala: Neidentificirani signal.
Qt CreatorNeke verzije desktop proizvoda Avira AntiVir imaju poznate probleme u različitim razvojnim okruženjima, uključujući Eclipse. Za rješavanje problema, Avira preporučuje nadogradnju na verziju avipbb.sys 10.0.22.22. Za više informacija pogledajte ograničenu upotrebljivost IDE/otklanjivača pogrešaka od 08. 12. 2010.
Na nekim uređajima, kao što su Wacom tableti, pokrenuti procesi mogu spriječiti pokretanje otklanjivača pogrešaka. Zaustavite sve pokrenute procese i zatim ponovno pokrenite otklanjivač pogrešaka.
Debugger ne zaustavlja na prekidnim točkama
Možda ste stvorili release build koji nema informacije za otklanjanje pogrešaka. GNU Compiler Collection (GCC) debug build ima opciju -g na naredbenom retku kompajlera. Provjerite je li ta opcija prisutna u izlazu kompajliranja. Ako nije, prilagodite postavke izrade u načinu rada Projects.
Debugger ne radi
Ako otklanjivač grešaka ne radi ispravno, pokušajte sljedeće:
- Provjerite koristite li barem Qt Creator 3.0.1
- Odaberite
(Run) kako biste provjerili je li selektor alata za izgradnju i pokretanje odabrao pokretni cilj i možete li pokrenuti aplikaciju. - Provjerite je li otklanjivač pogrešaka ispravno postavljen.
- U načinu rada Debug idite na View > Views > Debugger Log kako biste otvorili prikaz dnevnika otklanjanja pogrešaka. Pregledajte sadržaj okna na desnoj strani kako biste saznali što je pošlo po zlu. Uvijek priložite sadržaj okna uz pitanja vezana za otklanjanje pogrešaka na mailing listu Qt Creator (qt-creator@qt-project.org) ili ga zalijepite na servis za umetanje koda prije postavljanja pitanja na IRC-u (na kanalu #qt-creator na Libera.Chatu).
Napomena: Greška 135 obično znači da se ne može pronaći ovisni DLL.
Članovi pokazivačke varijable ne prikazuju se izravno
Kada koristite prikaze Locals i Expressions za pregled varijable pokazivača i proširite stavku stabla varijable, prikazuje se još jedna razina stabla. Za izravno prikazivanje članova varijable pokazivača odaberite Dereference Pointers Automatically u kontekstnom izborniku u prikazima Locals i Expressions.
Ako uopće ne možete vidjeti varijable, provjerite jeste li odabrali konfiguraciju za otklanjanje pogrešaka.
Članovi strukture nisu posloženi prema rasporedu strukture
Po zadanom se članovi strukture prikazuju abecednim redom. Za pregled stvarnog rasporeda u memoriji, uklonite Sort Members of Classes and Structs Alphabetically iz kontekstnog izbornika u prikazima Locals i Expressions.
Ugrađeni otklanjivač pogrešaka je spor pri pokretanju i tijekom izvršavanja
Sporoće koje su povezane s učitavanjem informacija za otklanjanje pogrešaka teško je izbjeći. Sljedeći odjeljci opisuju neka moguća rješenja.
Kezhiranje indeksa simbola GDB-a
Kada koristite GDB kao pozadinski sustav, možete automatski spremiti kopiju njegovog indeksa simbola u predmemoriju na disku i dohvatiti je prilikom učitavanja iste binarne datoteke u budućnosti. Idite na Preferences > Debugger > GDB > Use automatic symbol cache.

Minimiziranje broja prekidnih točaka
Neki uspori u otklanjanju pogrešaka proizlaze iz održavanja prekidnih točaka unutar otklanjača pogrešaka (u nekim okolnostima sve prekidne točke moraju se ponovno umetnuti i ukloniti za svaki korak) i procjene izraza nakon svakog koraka. Preporučujemo da minimizirate broj prekidnih točaka i promatranih izraza.
Čišćenje izgradnje
Ako zastarjele datoteke .pdb usporavaju otklanjanje pogrešaka, pokušajte s čistom izgradnjom.
Onemogućavanje inkrementalnog povezivanja
Inkrementalno povezivanje može utjecati na otklanjanje pogrešaka. Ako prikaz dnevnika otklanjanja pogrešaka (Debugger Log ) prikazuje poruku " Nije moguće provjeriti kontrolnu sumu modula" (Unable to verify checksum of module ), onemogućite inkrementalno povezivanje.
Kada koristite CMake kao sustav za izgradnju, dodajte sljedeći redak u CMakeLists.txt datoteku projekta:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO" )Kada koristite qmake kao sustav za izgradnju, dodajte sljedeći redak u .pro datoteku projekta:
QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
Debugger se ne može spojiti na pokrenuti proces na Linuxu
GDB koristi ptrace za povezivanje na pokrenute procese. Neke Linux distribucije to ne dopuštaju, što sprječava sve pokušaje izravnog povezivanja na postojeći proces ili korištenja opcije Run in terminal u Qt Creator.
Razlozi za to opisani su u KernelHardeningu.
Međutim, korisnost ove sigurnosne mjere čini se upitnom jer se ova značajka može lako onemogućiti. S root dozvolama, možete privremeno onemogućiti značajku tako da upišete 0 u /proc/sys/kernel/yama/ptrace_scope ili trajno promjenom vrijednosti u /etc/sysctl.d/10-ptrace.conf. Čak i ako nemate povišene dozvole, možete kasnije onemogućiti značajku dodavanjem biblioteke koja poziva prctl(0x59616d61, getppid(), 0, 0, 0);, kao što je ona u $QTCREATORDIR/lib/libptracepreload.so, u LD_PRELOAD varijablu okruženja.
Vidi također Kako: Debugiranje, Debugiranje, Debugeri i Debugger.
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.