2011-03-02 5 views
2

다소 복잡한 SCons 스크립트를 작성했으며 찾을 수없는 오류가 있습니다. 예를 들어 중간 파일이 제거되었거나 순환 종속성이보고되고 이유를 알고 싶습니다. 불행히도 SCons가하고있는 일과 디버깅 출력을 디버깅하는 데는 아무런 의미가 없습니다. 예를 들어, --taskmastertrace=FILE 옵션은 중간 파일이 삭제 된 이유를 설명하지 않습니다. (편집 : 당연히 나는 Precious을 사용하여 그들을 보호 할 수 있지만, 그 파일들은 이 필요하고 다른 타겟에 대해서는이 필요하고 빌드가 실패합니다 - 나는 그것들이 삭제 된 이유를 모르겠습니다. 현재 해결책은 Precious을 포함하지만 실제는 아닙니다 문제 해결).SCons 디버그

종속성 변경, 파일 작성 및 삭제 및 기타 작업을 포함하여 모든 작업을 추적하고 싶습니다. 이러한 자세한 로깅을 활성화하는 방법이 있습니까? 나는 현재 내 프로젝트에 조금 붙어있다.

건배, H.

+0

[tree] (http://www.scons.org/doc/0.98.5/HTML/scons-user/x3520.html) 옵션이 작동하지 않는 이유는 다음과 같습니다.'scons -nQ --tree = status yourfile'. –

+0

어떤 이유로 든 중간 파일이 트리에 나타나지 않습니다. 그것이 제가 궁금해하는 것들 중 하나입니다. – hochl

+0

나는 scons의 주요 결함이 물건을 디버그 할 수 있다는 것에 동의한다. 저와 함께 로깅 기능을 추가 할 것입니다. – Nick

답변

1

좋아, 내가 문제를 해결했습니다. 그 이유는 디렉토리가 타겟리스트에 들어가는 것이고, 디렉토리는 그들 자신의 암시적인 의존성 세트를 생성하기 때문인 것으로 보인다. 최소한 그것이 내가 생각하기에, 디렉토리를 제거한 후에 스크립트는 예상대로 작동하기 때문입니다. 내 가정이 맞다면 누구든지 명확히 할 수 있습니까?

자세한 내용은 SCons 디버깅 방법에 대해서는 아직 정확히 알지 못합니다. 내 솔루션은 덤프 함수가 인수와 반환 값을 호출하는 /usr/lib/scons/SCons/Node/FS.py에 함수 데코레이터를 추가하는 것이 었습니다.

+2

Dir을 대상으로 추가하면 이상한 효과가 있음을 확인할 수 있습니다. 디렉토리가 이미 존재하면 종속성이 전달되고 빌드가 발생하지 않습니다. 디렉토리의 실제 파일에 의존하는 것이 훨씬 낫습니다. –