2013-05-21 2 views
1

나는 완전한 디버그 정보를 가진 GNU make, clang 등으로 빌드 된 프로세스 (앱이 아님)를 가지고있다. lldb와 소스 코드, 변수 바인딩 등을 보여주는 GUI 디버거로 lldb에 연결하고 싶습니다.Xcode 4.6.2 및 lldb에서 non-xcode 프로세스를 디버깅하는 방법은 무엇입니까?

OS X 10.8에서 lldb를 사용하여 Xcode 4.6.2 또는 다른 도구 (예 : Emacs에서 작동하는 lldb 모드)?

나는 XCode 4.6.2로 붙이려고했으나 디스 어셈블리만을 보여 주었고 어디에서 소스 코드를 찾을 지 알 수 없었다. 누군가는 스키마를 편집하고 사용자 정의 작업 디렉토리를 설정하도록 제안했지만 폴더 선택 아이콘은 사용할 수 없습니다. 또 다른 제안 파일 추가 ...하지만 도움이되지 않았다.

일반 lldb로 Terminal.app에서 연결하면 줄 번호와 원본 파일 이름 (경로 이름 제외)이 표시됩니다. lldb에게 소스 코드를 찾을 위치를 알려주지 못했습니다.

gbd의 명령 줄에서 dir 명령을 사용하여 소스가있는 위치를 알려주고 list 명령이 작동하도록 할 수 있습니다. 이렇게하면 Xcode가 gbd (여전히 프로세스/프로세스 식별자 (PID) 또는 이름 첨부) 메뉴에서 gbd를 사용하도록 Xcode에 지시하면 XCode가 소스를 표시하지만 gdb 지원이 XCode에서 제거되므로이 방법이 곧 중지됩니다. 일.

답변

1

lldb의 target.source-map 설정을 사용하여 매핑을 제공 할 수 있습니다. 자신의 시스템에서 프로그램을 빌드 한 경우 왜 이것이 필요한지 잘 모르겠습니다. 한 위치 (/tmp/original-directory)의 소스 코드로 프로그램을 빌드 한 다음 소스를 다른 위치 위치 (/tmp/new-directory) 및 디버그를 시도하십시오. 일반적으로 한 시스템에서 빌드하고 디버깅을 위해 모든 시스템을 두 번째 시스템으로 옮기지 만 소스 파일을 같은 위치에 복사하지 않는 경우가 더 일반적입니다.

어쨌든, http://lldb.llvm.org/lldb-gdb.html

(lldb) settings set target.source-map /buildbot/path /my/path 

가 소스 코드 파일을 찾는 경우 /my/path/buildbot/path의 모든 항목을 대체 할 lldb을 말할 것, 이것이 어떻게 사용되는지하지만 짧은 예를 보여줍니다. ~/.lldbinit 파일에이 설정을 적용하여 계속 유지할 수 있습니다.

gdb의 dir 명령과 직접적인 동일성은 없지만 일반적으로 이와 같은 방법으로 쉽게 수행 할 수 있습니다.

아아 나는 방금 Xcode 4.2.3 비트를 보았습니다 ... 그것은 매우 오래된 버전의 lldb입니다. lldb를 사용하려면 Xcode 4.6으로 업그레이드하는 것이 좋습니다. Xcode 4.2에서 lldb를 기억하지 못합니다. ...

+0

감사합니다. 나는 이것을 시도 할 것입니다. (제목의 Xcode 버전이 잘못되었습니다.) –

+1

target.source-map이 작동하지 않았습니다. 한 가지 문제는 lldb가 소스를 찾기 위해 노력하고 있는지 (그리고 실패했는지) 알지 못한다는 것입니다. 또한 경로 맵은 모든 소스 파일이 바이너리가 빌드 될 때와 동일한 위치에 정확히 위치하는 내 경우에는 본질적으로 쓸모없는 것처럼 보입니다. http://lldb.llvm.org/lldb-gdb.html에 따르면 여전히 gdb 디렉토리 명령과 동등한 것이 없습니다. Xcode에서 볼 위치를 알려줄 수 있습니까? –

+0

소스 코드가 있어야 할 기능 중 하나에서 멈췄을 때'image lookup -v -a ADDRESS'를 시도해보십시오.그러면 소스 파일의 전체 경로를 포함하여 lldb가 해당 주소에 대해 알고있는 모든 정보가 표시됩니다. lldb가 올바르게 찾을 수는 있지만 Xcode가 소스 코드를 표시하지 않을 수 있습니다. lldb ('xcrun lldb') 명령 줄을 사용하여이 경우를 확인할 수 있습니다. NB : 최신 lldb의 경우이 작업을 수행하는 더 간단한 방법은'source list -a ADDRESS'이지만 Xcode 4.6의 lldb에서 작동하는지 기억이 안납니다. –

0

몇 년 후 ... 코드를 처리 할 수있는 첫 번째 유용한 디버거 OS X에서 Microsoft의 VSCODE (현재 VSCODE 1.9.1, ms-vscode.cpptools 0.10.1 포함)입니다. 그건 예상치 못한 일이었다.

관련 문제