valgrind изменяет бинарное поведение - PullRequest
4 голосов
/ 09 февраля 2012

Я пытаюсь отследить утечку памяти в программе на c ++ с использованием valgrind.Программа скомпилирована с g ++ и может быть запущена без каких-либо ошибок.К сожалению, valgrind изменяет поведение моей программы так, что происходит сбой после выдачи ошибки времени выполнения.Поскольку этот сбой происходит до того, как он достигает соответствующих частей кода, у меня нет шансов отследить утечку памяти.

Вся проблема проиллюстрирована подключенным выходом консоли.

myUser@computer:~$ ./myProgram input.xml

Processing...

Finished successfully...

----------------------
Hit Enter to continue...

myUser@computer:~$ valgrind --leak-check=yes --log-file=valgrindLog ./myProgram input.xml

Processing...
myProgram-error: Not working Polymorphism. Base class method called instead of derived class method. End-of-myProgram-error.
terminate called after throwing an instance of 'char const*'
Aborted
myUser@computer:~$ g++ -dumpversion
4.4.5
myUser@computer:~$ valgrind --version
valgrind-3.6.0.SVN-Debian
myUser@computer:~$ uname -r
2.6.35-30-generic
myUser@computer:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

Ответы [ 4 ]

3 голосов
/ 15 февраля 2012

Вероятно, что valgrind меняет поведение вашего кода, потому что у вас ошибка более серьезная, чем утечка памяти.Свободный от ошибок переносимый код, вероятно, не будет генерировать исключения только потому, что вы запускаете его с помощью valgrind.

0 голосов
/ 16 февраля 2012

Большое спасибо всем вам !!!

Я вернулся к своему коду, чтобы отследить неопределенное поведение, которое обнаружил valgrind.Наконец-то я его нашел и смог улучшить свой код.

Еще раз большое спасибо !!

0 голосов
/ 15 февраля 2012

К сожалению, valgrind изменяет поведение моей программы так, что происходит сбой после выдачи ошибки времени выполнения. Так как этот сбой происходит до того, как он достигает соответствующих частей кода, у меня нет шансов отследить утечку памяти.

Это здорово удача. Теперь в дополнение к поиску и устранению утечки памяти вы также можете найти и исправить ошибку. Вы смотрели на основной файл, чтобы узнать, где ваш код неисправен?

0 голосов
/ 15 февраля 2012

У меня были проблемы, из-за которых Валгринд во всем разоблачал проблемы с потоками, которые раньше никогда не возникали.Я не думаю, что что-то подобное может происходить здесь?

...