2017-02-14 3 views
0

VSCode + CodeLLDB + LLDB를 사용하여 JIT의 언어 (KL)를 디버깅하고 있지만 LLDB가 소스 파일을 인식하는 데 문제가 있습니다.LLDB : 병합 폴더 구조의 소스 검색 폴더 지정

이 질문은 LLDB equivalent of gdb "directory" command for specifying source search path?과 중복됩니다. 그러나 답변을 받아 들일 수는 없습니다.

LLDB는 모든 소스 기기가 로컬 디렉토리에 컴파일 생각하는 것 - 그래서

kl /MyWork/someFile.kl 

을 실행하고이 파일이 /any/other/path/external.kl가 포함 된 경우, LLDB는 파일이 믿을 것이다 지금까지 /MyWork/external.kl

로 위치, 내가 (대부분)

settings set target.source-map /MyWork/ /any/other/path/ 

를 사용하여이 문제를 해결 일하고 있어요 그러나 이것은 단지 하나의 폴더에 대해 작동하는 것 같다. 시도한 경우 :

settings set target.source-map /MyWork/ /any/other/path/ 
settings set target.source-map /MyWork/ /I/use/many/dependencies/ 

그러면 LLDB는 어느 폴더에서도 -any- 파일을 찾을 수없는 것 같습니다. 내가 시도 할 때 흥미롭게도,이 LLDB 정확한 메시지를 정확한 메시지입니다

can't find external.kl in /I/use/many/dependencies/ 
can't find dependencies.kl in /any/other/path/ 

에 오류가 발생한하지만 LLDB 그냥 오류 아웃하기 :) 핑계를 찾고 거의 것처럼 보인다.

주 - 중단 점을 설정하고 로컬을 볼 수 있지만 그 지점에서 소스 코드를 볼 수없는 것 같습니다.

Any any -이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? 3 가지 가능성이 있습니다 : - LLDB로 수정/작업하여 소스 파일을 찾습니다 - CodeLLDB를 수정하여 LLDB + VSCode 사이의 경로 수정 - 어떻게 든 VSCode가 주어진 경로를 무시하고 자신의 폴더를 검색하도록 유도하십시오. 이름과 일치하는 모든 파일.

내 생각에 LLDB는이 문제를 해결할 수있는 적절한 곳이지만, 각 소스 파일을 리디렉션 할 수있는 플랫 폴더로 연결하는 시점까지 모든 제안을 공개합니다.

답변

0

lldb는 디버그 정보에 기록 된 소스 경로 만 알고 있습니다. DWARF의 규칙 (lldb가 사용하는 디버그 형식)은 include 파일이 상대 경로 나 기본 이름으로 주어진 경우 compilation 디렉토리에 상대적이라고 간주됩니다. 귀하의 경우에 그렇게 된 것 같습니다. 컴파일러 버그 같은데. lldb는이 시점에서 파일 계층 구조를 재구성 할 수 없습니다.

소스 맵을 사용하면 수동으로이 문제를 해결할 수 있습니다. 하지만 아마도 kl의 DWARF 출력에서 ​​혼란 스럽다는 이상한 점이있을 것입니다. http://bugreporter.apple.com으로 바이너리 예제 바이너리를 제출해야합니다.