В настоящее время я читаю и слежу за книгой "Learn C The Hard Way". В упражнении 4 мне нужно установить Valgrind. Сначала я сделал это локально на своем Macbook с Maverick, но получил предупреждение о том, что Valgrind может работать не на 100%.
Итак, теперь я попробовал это с Vagrant (используя VirtualBox) с коробкой Ubuntu 12.04. Вы можете проверить точный файл Vagrantfile (установка) и файлы упражнений здесь, в моем репозитории github.
Проблема:
я не вижу номеров строк, а вместо этого получаю что-то вроде 0x40052B
.
Я скомпилировал файлы, выполнив следующие действия:
$ make clean # Just to be sure
$ make
$ valgrind --track-origins=yes ./ex4
Я вставил результат в сюда.
Я нашел следующие 3 вопроса по SO, которые (частично) описывают ту же проблему, но ответ и решения не сработали для меня:
- Valgrind не отображение номеров строк, несмотря на флаг -g (в Ubuntu 11.10 / VirtualBox)
- Как заставить Valgrind отображать строковые ошибки?
- Valgrind не показывает номера строк
Что я пробовал софар:
- Добавлено
libc6-dbg
- установил
gcc
и попробовал компилировать с этим вместоcc
. - добавил
--track-origins=yes
вvalgrind
-команду - Добавлена (а позже удалена) компиляция с флагами
-static
и-oO
Так что я не уверен, что делать дальше? Я мог попробовать установить последнюю версию (вместо v3.7) с gcc
вручную, хотя это выглядело довольно сложно.
edit:
ответ @abligh кажется правильным. Я сделал это с помощью калейдоскопа: Слева вы видите результат: valgrind --track-origins=yes ./ex4
и на справа результат valgrind ./ex4
.
Думаю, мне все еще нужно изучить c
и его инструменты.
-g
там? - person ldx   schedule 19.03.2014