Ecco lo snippet di codice.mudflap genera core dump quando si utilizza l'operatore new() per allocare memoria
int main()
{
int *var = new int(6);
cout<<"Hello\n";
delete var;
return 0;
}
se compilato con paraspruzzi come
$export MUDFLAP_OPTIONS="-print-leaks -mode-check"
$g++ test.cpp -fmudflap -lmudflap
$./a.out
Segmentation fault (core dumped)
Ma quando compilato opzione paraspruzzi senza di essa non genera core dump. Sono nuovo di mudflap. Dite gentilmente se sto usando mudflap nel modo sbagliato.
FYI:
$uname -a
Linux localhost.localdomain 2.6.18-308.4.1.el5 #1 SMP Wed Mar 28 01:54:56 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
$g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux-gnu/4.7.3/lto-wrapper
Target: x86_64-redhat-linux-gnu
Configured with: /root/rohit/gcc-4.7.3/configure --prefix=/usr/
Thread model: posix
gcc version 4.7.3 (GCC)
bt pieno di coredump
Nucleo è stato generato da `./a.out'.
Program terminated with signal 11, Segmentation fault.
[New process 22176]
#0 0x0000003ca5e075c8 in ??() from /lib64/libgcc_s.so.1
(gdb) bt ful
#0 0x0000003ca5e075c8 in ??() from /lib64/libgcc_s.so.1
No symbol table info available.
#1 0x0000003ca5e0882b in _Unwind_Backtrace() from /lib64/libgcc_s.so.1
No symbol table info available.
#2 0x0000003c96ce5eb8 in backtrace() from /lib64/libc.so.6
No symbol table info available.
#3 0x00002b4acf58b417 in __mf_backtrace (symbols=0x6a51db8, guess_pc=0x2b4acf58d351, guess_omit_levels=2)
at /root/rohit/gcc-4.7.3/libmudflap/mf-runtime.c:1981
pc_array = (void **) 0x6a51e00
pc_array_size = 6
remaining_size = <value optimized out>
omitted_size = Unhandled dwarf expression opcode 0x9f
i = <value optimized out>
#4 0x0000000000000002 in ??()
No symbol table info available.
#5 0x0000000000000004 in ??()
No symbol table info available.
#6 0x0000000000000000 in ??()
No symbol table info available.
Proprio come un avvertimento, capisci che il tuo codice * non * crea un array, giusto? – BoBTFish
Tutto funziona correttamente con Red Hat 5.4, gcc 4.7.2 – BoBTFish
Posso suggerire di includere il backtrace nella domanda? Per ottenere il backtrace, apri il core dump con 'gdb' (' gdb a.out core') e usa il comando 'bt' all'interno. –