Valgrind nie pokazuje numerów linii
Próbuję dowiedzieć się, gdzie dokonałem nieprawidłowego zapisu do fragmentu pamięci za pomocą Valgrind. Mówi, że istnieje taki problem, także w jakiej funkcji, ale nie w jakiej linii. Chociaż funkcja jest dość mała, chciałbym mieć numer linii pokazany w Valgrind. Widziałem to na niektórych wyjściach Valgrind, ale obecnie nie są one wyświetlane i zastanawiam się dlaczego.
Dane wyjściowe są następujące:
niklas@emerald:~/Arbeitsfläche/spyr/bin/Debug$ valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./spyr
[...]
==4404== Invalid write of size 4
==4404== at 0x8048849: sp_ParticleBuffer_init (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048BFC: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== Address 0x422a0a0 is 4 bytes after a block of size 4 alloc'd
==4404== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==4404== by 0x8048BC1: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404==
==4404== Invalid write of size 4
==4404== at 0x8048865: sp_ParticleBuffer_init (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048BFC: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== Address 0x422a09c is 0 bytes after a block of size 4 alloc'd
==4404== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==4404== by 0x8048BC1: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
==4404== by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr)
[...]
Widziałem wyjścia, w których numer linii jest wyświetlany po dwukropku za nazwą pliku. To znaczy./home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr:23
lub podobne.
Jak mogę to włączyć?
FYI, to jestsp_ParticleBuffer_init
funkcjonować.
int sp_ParticleBuffer_init(sp_ParticleBuffer* buffer, sp_Uint32 buffer_size, int init_zero) {
size_t size = sizeof(sp_Particle) * buffer_size;
buffer->next = null;
buffer->array = (sp_Particle*) malloc(size);
buffer->alive_count = 0;
if (!buffer->array) return SPYR_ALLOCFAILED;
if (init_zero) memset((void*) buffer->array, 0, size);
return SPYR_NOERR;
}