2014-01-20 1 views
2

내가 뭘 잘못했는지 모르겠지만이 문제를 해결할 수 없습니다. file에 따르면ValGrind에서 내 기호를 찾을 수없는 이유는 무엇입니까?

, 그것은 분명히 말한다

test: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.16, BuildID[sha1]=0x436d17ab04dc54f35f1a8e6a16d4f87aaf79a0e9, not stripped 

는 "제거하지". 그럼에도 불구하고, 때 내가 뭘 잘못 ... 객체가 심볼 테이블이없는 이유 Valgrind의이

--27709-- Reading syms from /root/ValGrind/test (0x8048000) 
--27709-- object doesn't have a dynamic symbol table 

내가 을 알아낼 수 없습니다 실행?

편집 : 이진수가 32 비트이고 64 비트 OS를 실행 중이니까? 그렇지 않아도 될까요?

답변

4

실행 파일은 정적으로 링크됩니다. 어쩌면 그게 문제의 원인일까요?

실제로 입니다. 문제가 있습니까? "객체에는 동적 심볼 테이블이 없으므로"메시지는 Valgrind의 디버그 출력이므로, 중요하지 않습니다.

btw. http://valgrind.org/docs/manual/faq.html#faq.hiddenbug에 따르면 Valgrind는 정적으로 링크 된 응용 프로그램과 어쨌든 잘 작동하지 않습니다.

+0

바이너리는 정적으로 링크됩니다. 그게 내 문제 야? – MathematicalOrchid

+0

글쎄 정적 링크는 적어도 Valgrind를 실행할 때 불완전한 결과를 줄 것입니다. 그래서 예, _a_ 문제입니다. 의사에 따르면 대안으로 "--soname-synonyms = somalloc = NONE"옵션을 사용할 수 있습니다 (실제로 시도한 적이 없지만). – oliver

0

컴파일/링크 할 때 -g 또는 -ggdb 플래그를 추가하는 것을 잊었습니까?

+0

가 아니, 나는 확실히 그것을했다. (그리고 바이너리가 커졌습니다.) – MathematicalOrchid

0

바이너리를 정적 링크에서 동적 링크로 변경했습니다. 설치된 32 비트 라이브러리 이제 작동합니다.

(PS. 다른 필사적으로 오픈 수세의 끔찍한 패키지 검색과 사투를 벌인 사람에게, 올바른 패키지 이름은 libstdc++6-32bit입니다.)