Portál AbcLinuxu, 14. května 2025 00:02

Dotaz: gcc runtime checks

22.2.2012 22:21 bob
gcc runtime checks
Přečteno: 206×
Odpovědět | Admin
Bezne pouzivam jenom skriptovaci jazyky, ale nyni musim modifikovat program v "c". Nedari se mi zjistit, jak pomoci gcc nebo jineho volne dostupneho nastroje provest testy na zakladni chyby jako jsou prekroceni meze poli, cteni neinicializovane promenne, zapis na misto urcene neinicializovanym pointerem apod.

Budu vdecny, kdyz mi poradite nebo date odkaz na nejaky navod pro zacatecniky.

PS. Obcas musim pouzivat i fortran, kde mam podobne problemy.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.2.2012 22:42 Michal Marek
Rozbalit Rozbalit vše Re: gcc runtime checks
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pusť program ve valgrindu.
22.2.2012 23:35 oiufoj
Rozbalit Rozbalit vše Re: gcc runtime checks
Odpovědět | | Sbalit | Link | Blokovat | Admin
C/C++ bohuzel checkovat pole neumi, gfortran ale ano s pouzitim -fbounds-check.

Na C/C++ existuje vynikajici nastroj valgrind.
23.2.2012 11:57 Ivan
Rozbalit Rozbalit vše Re: gcc runtime checks
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vim ze si ted zadelavam na flamewar, ale doporucit muzu: valgrind (free sw)
insure ( neco jako valgrind, ale komercni)
purify ( neco jako valgrind, ale komercni)
Jak insure tak i purify delaji takovy wrapper nad kompilatorem a zarovej maji castesne implementovanou vlastni runtimme knihovnu(glibc). Na linuxu je vysledna aplikace nakonec zkopimpilovana gcc, ale vstupem pro gcc uz je nejaky predzvykany zdrojak.
MSVC, microsofti Ccko ma dve runtime knihovny(release, debug) a ta debug verze provadi spoustu uzitecnych kontrol.
No pak je tu gcc a glibc, ktery taky ma nejaky volby. Vetsinou jsou ale dost dobre schovany. Zkus si najit dokumentaci ke glibc a najdi si vsechny env. promenny ktery glibc kontroluje. Nekolik tech promennych ovlivnuje prave kontroly pri alokaci pameti.
gcc ma taky svoji runtime knihovnu a teoreticky by melo umet zavolat tvoji call-back funkci pokazde kdyz program zavola svoji funkcni anebo kdyz funkce skonci. To by se dalo vyuzit ke kontrole stack-frames.
Valgrind je dobrej. Insure a purify toho umi o neco vic. A vsechno co nabizi GNU nastroje je trochu pres ruku a dost krkolome se to pouziva.
23.2.2012 19:22 bob
Rozbalit Rozbalit vše Re: gcc runtime checks
Dekuji vsem za rady. B.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.