Троан Эрик В.
Шрифт:
Valgrind не требует повторной компиляции программы, хотя, как и все средства отладки, он имеет возможность компилировать программы с отладочной информацией.
$ valgrind ./broken
==30882== Memcheck, a.k.a. Valgrind, a Memory ERROR detector for x86-linux.
==30882== Copyright (C) 2002-2003, and GNU GPL'd, by Julian Seward.
==30882== Using valgrind-2.0.0, a program super vision framewok for x86-linux.
==30882== Copyright (C) 2000-2003, and GNU GPL'd, by Julian Seward.
==30882== Estimated CPU clock rate is 1547 MHz
==30882== For more details, rerun with: -v
==30882==
==30882== Invalid write of size 1
==30882== Недопустимая запись размером 1
==30882== at 0xC030DB: strcpy (mac_replace_strmem.с:174)
==30882== by 0x8048409: broken (broken.с:15)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)
==30882== Address 0x650F029 is 0 bytes after a block of size 5 alloc'd
==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)
==30882== by 0x80483F3: broken (broken.с:14)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)
==30882==
==30882== Conditional jump or move depends on uninitialised value(s)
==30882== Условный переход или перемещение зависит от
неинициализироваиного значения(й)
==30882== at 0x863D8E: __GI_strlen (in /lib/libc-2.3.2.so)
==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)
==30882== by 0x804841C: broken (broken.с:16)
==30882== by 0x804851F: main (broken.с:47)
1: 12345
==30882==
==30882== Invalid write of size 1
==30882== at 0xC030D0: strcpy (mac_replace_.с: 173)
==30882== by 0x804844D: broken (broken.с:21)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: _libc_start_main (in /lib/libc-2.3.2.so)
==30882== Address 0x650F061 is 0 bytes after a block of size 5 alloc'd
==30882== at 0xC0C28B: malloc (vg_replace_ malloc.с:153)
==30882== by 0x8048437: broken (broken.с:20)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)
==30882==
==30882== Invalid write of size 1
==30882== at 0xC030DB: strcpy (mac_replace_strmem.с:174)
==30882== by 0x804844D: broken (broken.с:21)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: libc_start_main (in /lib/libc-2.3.2.so)
==30882== Address 0x650F064 is 3 bytes after a block of size 5 alloc'd
==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)
==30882== by 0x8048437: broken (broken.с:20)
==30882== by 0x804851F: main (broken.с:47)
==30882== by 0x802BAE: __libc_start_main (in /lib/libc-2.3.2.so)
==30882==
==30882== Invalid read of size 4
==30882== Недопустимое чтение размером 4
==30882== at 0x863D50: __GI_strlen (in /lib/libc-2.3.2.so)
==30882== by 0x83BC31: _IO_printf (in /lib/libc-2.3.2.so)
==30882== by 0x8048460: broken (broken.с:22)
==30882== by 0x804851F: main (broken.с:47)
==30882== Address 0x650F064 is 3 bytes after a block of size 5 alloc'd
==30882== at 0xC0C28B: malloc (vg_replace_malloc.с:153)