2014-01-03 2 views
0

У меня есть проект на языке C, но если я начать проверку Valgrind, у меня есть ошибкаValgrind, можно получить количество строк?

Conditional jump or move depends on uninitialised value(s) 
at 0x804B2C3: nameOfMethodC (in ...ap.exe) 
by 0x804A62E: nameOfMethodB (in ...ap.exe) 
by 0x80493A2: nameOfMethodA (in ...ap.exe) 

Как я могу найти эту неинициализированный переменную?

Можно ли получить номера строк? Например:

Conditional jump or move depends on uninitialised value(s) 
at at 0x804B2C3: nameOfMethodC (in ...file.c on 123 line) 
. . . . 

Для запуска Valgrind я использую:

valgrind --tool=memcheck ./ap.exe param1 param2 

ответ

2

Убедитесь ap.exe скомпилирован с отладкой отключены информация включена и оптимизации.

+0

, как я могу проверить это? – user3139356

+0

Если вы компилируете gcc/clang, убедитесь, что флаг '-g' есть. Вы также можете добавить '-O0', чтобы отключить все оптимизации (не обязательно, но сделайте ошибки ясными). –

+1

Зависит от вашего компилятора/IDE. Для GCC вам нужно добавить опции '-g' и' -O0'. В IDE часто есть какой-то флажок. – mpartel

-1
valgrind --track-origins=yes ./out 

Над valgrind команда даст с помощью uninitialized переменной

+0

valgrind: Bad option '--track-originins = yes'; прерывание. – user3139356

+0

Было [добавлено в valgrind 3.4.0] (http://valgrind.org/docs/manual/faq.html#faq.undeferrors). – mpartel

Смежные вопросы