2017-02-19 8 views
3

업데이트 : Jason Molenda가 제공 한 답변을 바탕으로 설정 명령이 전혀 문제가되지 않는다는 것을 알았습니다. 올바르게 읽었으며 올바른 값을 가지고 있습니다. 아직 중단 점은 여전히 ​​해결되지 않습니다. 문제에보다 정확하게 부합하도록 주제 이름을 변경했습니다.xcode 중단 점이 포함 된 cpp 파일로 해결되지 않음 - MacOS

요약 : 문제는 cpp 파일을 포함합니다. 거터를 사용하여 중단 점을 설정할 때 Xcode에서이를 해결할 수없고, 응용 프로그램이 외부에서 작성되었으며 (Xcode에서 개발되지 않은) 내 .lldbinit에 이미 target.inline-breakpoint - 전략은 항상 설정됩니다.

이전 버전 : 내 문제는 내가 (단지 디버거로 엑스 코드를 사용하려고, 외부 내장 응용 프로그램에서) 엑스 코드의 디버거가 .CPP 포함 된 파일에 중단 점에서 휴식을 얻을 수 있다는 것입니다. 항상

설정 설정 target.inline - 중단 - 전략

을 그리고 내가 그랬어 :

나는 대답이 (가) .lldbinit 파일에 다음을 추가하는 것을 발견했다. 그것은 전혀 읽히지 않는 것으로 보이며 아무 것도 변하지 않습니다. 사용하여 자신을 명령을 실행하는 경우 :

명령 소스를

그것은 나를 알려줍니다 ~/.lldbinit는

:

-bash : 설정 :

를 찾을 수없는 명령을 이해하지 않는 이유는 없습니다 '설정'명령을 찾아보십시오. 나는이 파일이 어떻게 작동하는지에 대해 거의 알지 못한다고 덧붙이 겠지만이 명령은 많은 lldbinit 파일에서 문제없이 사용되었다.

나는 이것에 관한 정보를 찾았고 Google은 내가 아무리 검색해도 조금도 관련이 없다.

기타 참고 사항 :

- 응용 프로그램은 디버그 정보로 작성됩니다.

-Xcode를 설정하기 위해 비어있는 프로젝트를 만들었고 빌드 된 코드로 디버깅 할 수있는 새 구성표 실행 파일을 설정하고 코드 탐색을 위해 코드 폴더 참조를 추가했습니다.

-I Xcode 거터를 사용하여 중단 점을 추가하십시오.

- MacOS 10.12 - Linux가 아닌 Sierra 및 Xcode 8.2.1을 사용하고 있습니다.

- 명령 줄을 통해 LLDB를 실행하고 다음을 사용하여 중단 점을 설정할 경우 : b filename.cpp : line, 모든 것이 올바르게 작동합니다. 이것은 '설정 : 명령을 찾을 수 없음'오류에도 불구하고 사실입니다. 수동으로 실행하면 오류가 발생합니다. 그러나 Xcode의 시각적 디버거에서는 작동하지 않습니다. 아마도 나는이 오류에 속아 넘어지고 있습니까?

-Breakpoints는 기본 .cpp 파일에서 잘 작동하지만 포함 된 기본 .cpp 파일에는 포함되지 않습니다.

도움 주셔서 감사합니다.

답변

0

command source ~/.lldbinit은 lldb에서 실행해야합니다. 쉘에서 실행하고 있습니다. 그 오류 메시지는 bash에서 온 것입니다.("settings"은 bash를 의미하지 않습니다.)

settings set target.inline-breakpoint-strategy always 프로젝트에 (헤더가 아닌) 소스 파일이 포함되어있을 때 필요합니다. 이것은 일반적인 것이 아니기 때문에 기본 동작은 아닙니다. 디버거의 성능을 저하시켜 필요한 모든 파일을 검사합니다. https://lldb.llvm.org/troubleshooting.html 상단에 문서화되어 있습니다. 대부분의 사람들은이 설정이 필요하지 않습니다.

Xcode의 중단 점을 소스 편집기의 중단 점 거터에서 클릭하면 왜 작동하는지 잘 모르겠습니다. 별도의 문제 일 수 있습니다. 프로젝트를 시작하고 중지하는 경우, 당신은 당신이 의도 것처럼 always 있는지 확인하기 위해 디버거 콘솔 창에

(lldb) settings show target.inline-breakpoint-strategy 

을 할 수 있습니다. 중단 점이 작동하지 않으면 빌드 설정을보고 빌드 설정 중 하나에서 디버그 정보가 생성되지 않는지 확인합니다.

+0

답장을 보내 주셔서 감사합니다. 이것은 내가 이해하지 못했던 몇 가지 것을 명확하게했다. 설정 명령은 분명히 의도 한대로 작동하며 '항상'으로 설정됩니다. 분명히 다음, 내 문제는 완전히 다른 뭔가이며 나는 무엇을 모르겠다. 내 빌드가 디버그 정보를 생성하고 .cpp 파일을 포함합니다. –

+0

Xcode에서 프로젝트를 실행하고 디버거에서 일시 중지 한 다음 '중단 점 목록'을 실행하여 Xcode가 파일 이름을 정확히 지정하는 방법을 확인하십시오. 그런 다음 소스 파일의 기본 파일 이름에 대해'target module dump line-table' * filename *을 시도하여 소스 파일의 전체 경로가 디버그 정보에서 어떻게 보이는지 확인하십시오. 두 경로 중 어느 경로에'/../'s가 있습니까? http://bugreport.apple.com에서 이러한 모든 세부 사항을 포함하는 버그 보고서를 제출하고 거기서 디버깅 할 수 있습니다. 프로젝트 파일을 컴파일하는 방법과 관련이있을 수 있습니다. –

+0

마침내 이것을 테스트 할 기회가 생겼습니다. 어떤 이유로, target module dump line-table은 항상 일치하는 것이 전혀 없다고 알려줍니다. 심지어 나에게 중단 점을 올바르게 해석하는 기본 .cpp 파일에 대해 알려줍니다. 경고 : 소스 파일 이름이 ' .cpp'와 일치하지 않습니다. 오류 : 모든 파일 인수가 어떤 명령 인수와도 일치하지 않습니다. " –

1

좋아,이 문제는 지난 며칠 동안 나를 괴롭혔다. 인터넷에는 문자 그대로 아무것도 도움이되지 않는다. -하지만 마침내 알아 냈다! Kinda 실수로 - 나는 물건을 만지작 거리며 지금은 완전히 신비한 이유로 작동합니다. 맥 OS 시에라 - -

은 엑스 코드 8 중순 2010 컴퓨터

시트 문제점 : 외부 빌드에

이 점은 주요 CPP 파일에 대한 작업을 중단하지만, 중단 점은 어떤을 위해 작동하지 않습니다 포함 된 파일 - "#include"에 포함 된 cpp 파일 lldbinit 설정은 상황을 개선하기 위해 아무 것도하지 않습니다.

증상 :

실행 포함 된 파일에서 만든 몇 가지 새로운 브레이크 포인트와 프로그램, 다음은 엑스 코드 디버거에서 일시 정지 키를 누릅니다. LLDB 콘솔 (화면의 오른쪽 아래)에 중단 점 목록 을 입력하십시오. 중단 된 모든 중단 점은 끝에 "location = 0 (pending)"이라고 표시됩니다. 메인 파일에서 작업 중단 점을 추가하면 "location = 1"이 표시됩니다.

해결 방법 : 프로젝트 매니저에서

는 주 프로젝트 파일을 클릭 한 다음 대상, 고토 "정보"를 클릭 - 나는 당신이, 당신은 것입니다 제대로 구축 할 수있어 있으리라 믿고있어 이후 Build Tool 상자에 build.sh 파일의 경로가 있어야합니다. 하지만 디렉터리 상자가 비어 있는지 확인하십시오 (내 인수 상자도 비어 있지만 관련이 있는지 의심 스럽습니다).

디렉터리 상자가 비어지면 build.sh는 더 이상 작동하지 않으므로 더 이상 작동하지 않습니다. 당신의 파일을 찾으십시오. 이 문제를 해결하려면 경로를 다음과 같이 하드 코드하십시오.

clang++ -g -I/usr/local/include/SDL2 -lSDL2 /absolute/path/to/sdl_mygame.cpp -o /absolute/path/to/mygameexecutable 

이제 빌드가 작동하고 신비하게도 중단 점이 모두 작동합니다.내 설정에 대한

기타 사항 : 외부 내가 대상을 만들어

  • 빌드로

    • 나는이 프로젝트를 만든 내 빌드 파일 및
    • 을 "패스 환경에서 빌드 설정을"선택 해제에 점
    • [빌드]의 [구성표]에서이 대상을 선택했습니다.
    • 실행 및 검사에서 내 스키마의 실행 파일을 선택했습니다. 디버그 실행 파일
    • 다른 대부분의 xcode 설정은 필요하지 않은 것 같습니다.
    • 나는 수제 영웅이 도움이

    희망을 함께 다음있어!