2015-01-23 3 views
0

나는 configure --enable-debug-runtime으로 llvm 디버그 버전을 빌드했다. gdb 스택 트레이스에 의해 llvm의 프로세스를 배우고 싶습니다. 하지만 gdb를 사용할 때 오류가 발생했습니다 :llvm 소스를 디버깅하는 방법은 무엇입니까?

llvm-3.4.2/build/Release+Asserts/bin$ gdb ./clang 
(gdb) b clang::CreateLLVMCodeGen (...) 
(gdb) r ./clang ~/tmp/helloworld.c -o helloworld 

아무도 도와 줄 수 있습니까? 감사.

+0

어떤 오류가 발생 했나요? –

+0

Gdb가 C 소스 파일과 기호를 찾을 수 없다고 말했습니다. –

+0

디버그 기호가없는 clang의 릴리스 버전이 있습니다. 디버그 버전을 얻으려면'configure'를 실행할 때'--enable-optimized' 플래그를 제거해야합니다. –

답변

1

clang을 디버깅하려는 문제는 clang의 첫 번째 호출이 다른 clang 프로세스를 생성한다는 것입니다. 해야 할 일은 clang -v를 사용하여 -cc1 명령 줄을 얻은 다음 gdb에서 실행 인수로 사용하는 것입니다.

는 지금까지 릴리스 + 비트를 어서, 당신은이 구성 라인을 수행 할 수 있습니다 :

configure --enable-debug-symbols --disable-optimized 

는 LLVM의 릴리스 소스를 사용하고있는 것으로 나타 때문이다. 기본값은 svn의 비트와 비교하여 변경됩니다.

어설 션은 어쨌든 유용합니다, 그래서에 보관 것입니다.

0

set follow-fork-mode childwould work, 너무. 그렇게하면 -cc1 뒤에 나오는 것을 알아내는 데 신경 쓰지 않아도됩니다.

관련 문제