나는 Xcode의 최신 버전이 인라인 된 함수를 보여주고 인라인 코드 내에서 스테핑을 수행 할 수 있다는 것을 알고있다. std :: function을 많이 사용하는 코드를 디버깅하려고하는데 call stack과 step-in 작업이 std :: function의 모든 구현 세부 사항을 건너 뛰면 정말 좋을 것입니다. 새로운 libC++는 이러한 세부 사항을 "always_inline"속성으로 표시하여 항상 (원하는 경우 디버그 빌드에서도) 항상 인라인됩니다. 사실, std :: function 구현을 디버깅하지 않기 때문에이 함수들을보고 싶지는 않습니다. ...Xcode 디버거의 호출 스택에서 인라인 함수를 제거 할 수 있습니까?
답변
지금은 할 수 없습니다. 백도어에서 lldb가 스택 프레임을보고하는 방식을 바꿀 수 있습니다 (http://lldb.llvm.org/formats.html 참조) -하지만 backtrace에서 (합성 된) 인라인 스택 프레임을 표시하지 않도록 할 수는 없습니다. gdb는 디버깅 정보에서 모든 인라인 된 정보를 구문 분석하는 것을 피하기위한 설정을했습니다. 스테핑이없고 백 트레인이 없지만 lldb에 추가되지 않았습니다.
현실적으로 인라인 코드 지원 스테핑을 끄고 싶지는 않습니다. 어떤 코드가 인라인되어 있는지 식별하지 않고, "다음"또는 "스텝 오버"스테핑 모드는 인라인 코드로 무섭게 깨집니다. Xcode 4.6은 꽤 훌륭합니다. 나머지 사례는 인라인 된 코드가있는 소스 행을 "단계적으로 넘어갔습니다."컴파일러의 잘못된 디버그 정보로 인해 .h
파일의 실제 인라인 구현이 표시됩니다. 이 디버그 정보를 정확하게 얻는 것은 까다 롭지 만 대다수가 정확한 반면, Xcode 4.6을 사용하여 경우에 따라 인라인 메소드로 끝납니다. 아마도 당신이 사용하고있는 용기에 대해, 당신은 그것을 많이 쳤을 것입니다. 그러나 그것은 일반적인 경우는 아닙니다.
lldb는 bt
의 출력을 사용자 정의 할 수있는 방법을 제공하지만 http://lldb.llvm.org/formats.html을 참조하십시오. 그러나 인라인 스택 프레임을 억제 할 방법은 없습니다. 파이썬에서 스택 워커를 작성하면 실제 bt
과 똑같은 일을하지만 인라인 프레임은 건너 뛸 수 있습니다. SBFrame::IsInlined()
메서드를 사용하면이 작업이 간단 해집니다. 하지만 Xcode를 사용하는 경우에는 도움이되지 않습니다.
- 1. Xcode 디버거의 메소드 호출?
- 2. 리눅스 커널에서 함수를 고속 호출 및 인라인 할 수 있습니까?
- 3. 다른 클래스의 함수를 어떻게 호출 할 수 있습니까? Swift, Xcode
- 4. Xcode 디버거의 버그?
- 5. 특정 호출에서만 함수를 인라인 할 수 있습니까?
- 6. 정적 멤버 함수를 인라인 할 수 있습니까?
- 7. Xcode 디버거의 중단 점
- 8. 활동을 호출하고 스택에서 호출 활동을 제거 하시겠습니까?
- 9. SQL에서 sqlite3_limit() 함수를 호출 할 수 있습니까?
- 10. 어떻게 함수를 직접 호출 할 수 있습니까?
- 11. ssh에서 로컬 함수를 호출 할 수 있습니까?
- 12. femtolisp에서 C 함수를 호출 할 수 있습니까?
- 13. 동적으로 로컬 함수를 호출 할 수 있습니까?
- 14. OnNavigatedFrom 함수를 호출 할 수 있습니까?
- 15. 생성자에서 가상 함수를 호출 할 수 있습니까?
- 16. .NET에서 MathGL 함수를 호출 할 수 있습니까?
- 17. ValidationSummary 후에 함수를 호출 할 수 있습니까?
- 18. VBA에서 java에서 함수를 호출 할 수 있습니까?
- 19. 어떻게이 함수를 haskell에서 호출 할 수 있습니까?
- 20. 인스턴스 함수를 어떻게 호출 할 수 있습니까?
- 21. MATLAB의 경로에없는 함수를 호출 할 수 있습니까?
- 22. Ajax를 사용하여 함수를 호출 할 수 있습니까?
- 23. 함수를 제대로 호출 할 수 있습니까?
- 24. C에서 스택에서 문자열 제거
- 25. Android : 스택에서 활동 제거
- 26. 스택에서 활동 제거
- 27. 함수를 호출 할 수 없습니다.
- 28. 스택에서 함수를 호출하면 어떻게 되나요?
- 29. UINavigationController의 스택에서 특정보기 컨트롤러를 제거 할 수있는 방법이 있습니까?
- 30. main 함수를 호출하지 않고 함수를 호출 할 수 있습니까?
ocasional "step over"버그가 나를 괴롭히지 않습니다. 내 재귀 코드를 디버깅하는 데 더 많은 관심이있어 ... 내가 바라는 건 모든 디버그 정보를 고려하지만 인라인 프레임을 필터링하고 인라인 된 코드를 통해 자동으로 단계별 처리하는 모드 인 것 같다. 실제 함수 호출에 도달했을 때). – alexk7
아, 그래, 네가 뭘하고 있는지 알 것 같아. 당신은'vector.push_back'과 같은 무언가에'step'을하고 있습니다. 그리고 여러분은 실제로 그것의 인라인 된 구현으로 들어가기를 원하지 않습니다. 'target.process.thread.step-avoid-regexp' 설정을 사용해보십시오. 예를 들어'set target.process.thread.step-avoid-regexp^[^] + std :: |^std ::'in '~/.lldbinit' 파일. –