answered
2014-11-21 17:12:25 +0100
Mudflap v gcc 4.8 normálně funguje. Address Sanitizer je obdoba téhož. Možnost hlídání kódu bez externích nástrojů jen tak z překladače nezmizí. Pouštět externí debugger není vždy optimální volba, zvláště pokud pouze potřebuji vědět, zda mám nebo nemám chybu v paměťových operacích. Hlídání chyb pomocí nastavení jedné proměnné shellu je také, přinejmenším, časově ekonomický přístup.
$ gcc -v
...
gcc version 4.8.3
$ gcc -Wall -pedantic -g -fmudflap -fmudflapir mff.c -o mff -lmudflap
$ MUDFLAP_OPTIONS=-viol-segv ./mff
*******
mudflap violation 1 (check/write): time=1416585515.959987 ptr=0x7059e0 size=4
pc=0x7f287283f228 location=`mff.c:6:9 (main)'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libmudflap.so.0(__mf_check+0x18) [0x7f287283f228]
./mff(main+0x89) [0x400b46]
/lib64/libc.so.6(__libc_start_main+0xf5) [0x7f28724b3db5]
Nearby object 1: checked region begins 301B after and ends 304B after
mudflap object 0x705910: name=`malloc region'
bounds=[0x705850,0x7058b3] size=100 area=heap check=0r/0w liveness=0
alloc time=1416585515.959901 pc=0x7f287283f658
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libmudflap.so.0(__mf_register+0x18) [0x7f287283f658]
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libmudflap.so.0(__real_malloc+0xbf) [0x7f287284016f]
./mff(main+0x25) [0x400ae2]
/lib64/libc.so.6(__libc_start_main+0xf5) [0x7f28724b3db5]
number of nearby objects: 1
Segmentation fault
Vagner bez á.
Miro Hrončok ( 2014-11-18 06:39:48 +0100 )editTeď mě prokleje, celou dobu na to dávám pozor, až mi to ujede, díky :-). ....Teda já blbnu ...to nebyl můj post ...akorát jsem se tam viděl, jak jsem upravoval tagy, každopádně jsem to v textu upravil.
shejby ( 2014-11-18 10:12:59 +0100 )edit