정확한 디버그 정보를 IR에 인쇄하고 싶습니다. 어떻게해야합니까?LLVM-IR의 디버그 정보 이름 또는 번호 취득
예를 들어, 내가 목적을 디버깅 문자열로 !12
를 인쇄하려면 다음과 같이 적외선 덩어리,
call void @llvm.dbg.declare(metadata i32* %a, metadata !10, metadata !11), !dbg !12!
!12 = !DILocation(line: 19, column: 7, scope: !6)
을 고려하십시오. 나는
Instruction::getDebugLoc()->get()
을 수행하여 DILocation의 목적을 획득 할 수 있지만, 내가 할 모든 포인터이며 수를 획득하기위한 이러한 인터페이스가 없습니다. 나는 DILocation를 투기
<0x7342628> = !DILocation(line: 23, column: 3, scope: <0x733e5f8>)
이 같은 결과 뭔가를 제공하기 때문에 실제로는 비트 코드를 생성 할 때 LLVM이 수를 제공한다고 가정 할 수있다. 내가 지시 :: 덤프()를 사용할 때, 그것은 나에게
call void @llvm.dbg.declare(metadata i32* %a, metadata !10, metadata !11), !dbg !12
등이 보이는 뭔가를 제공합니다, 그래서 나는 그것을 실행하는 동안 번호 디버그 - 정보의 정보 여부가 있는지 여부를 혼란 스러워요.
번호 정보가 있습니까? 그렇다면 어떻게 그 정보를 얻을 수 있습니까? 그렇지 않다면, LLVM에서 비트 코드의 생성을 찾기 위해 어디에서 검사해야합니까?
줄 번호와 열 번호가 아닙니다. 이 경우 디버그 정보 (IR에 있음)의 번호를 출력하고 싶습니다. 12 – izazu
@izazu, oh, my bad. 디버그 정보 노드에 대한 참조로 해석했습니다. – AlexDenisov