Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

posted 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