2016-07-21 4 views
0

실행 파일이 원격 Linux 컴퓨터에서 실행 중입니다.Valgrind에서 극적으로 프로그램 출력이 다릅니다.

나는 일반적으로 (./execute arg_one) 실행 파일을 실행, while 루프의 중간에 프로그램이 충돌 " './execute`오류 :의 malloc() : 메모리 손상 (빠른)"

그러나 가장 간단한 valgrind (valgrind ./execute arg_one)에서 프로그램을 실행하면 프로그램이 중단되지 않고 main을 통해 실행되며 실제로 올바른 결과가 생성됩니다.

왜 이것이 사실입니까?

+0

모르겠지만'MALLOC_CHECK_ = 2 ./execute arg_one'도 시도해 볼 수 있습니다. – melpomene

+0

valgrind는 어떻게 실행합니까? "* correct *"출력을 생성 할 수 있으므로 이것이 정의되지 않은 동작이라고합니다. –

+0

'valgrind --leak-check = full --track-origins = yes ./execute arg_one'을 사용하고 거기에있는 에러를 확인하십시오. 당신의 프로그램은 valgrind에서 열 받게 될 뭔가를해야합니다. –

답변

1

때로는 프로그램이 충돌하지만 valgrind가 매우 느리게 그것을 실행하고 있기 때문에 valgrind가 끝까지 실행하고 올바른 출력을 할 수 있습니다. 그러나 이것이 귀하의 프로그램이 올바른 것을 의미하지는 않습니다. valgrind에 표시된 오류/컨텍스트를 확인하고 프로그램을 작동 시키려면 오류를 수정해야합니다.

관련 문제