2009-11-05 3 views
1

iPhone 응용 프로그램에서 작업 중입니다 ..Clang 정적 분석기 또는 계측기에 의존해야합니까?

메모리 누수를 찾기 위해 많은 누출을 유발하는 계기로 응용 프로그램을 시작했습니다. 나는 그 포럼이 어딘가에서 이해할 수 없었기 때문에 언젠가는 계기들이 가끔씩 거짓 누출을 일으켜 정적 분석을 시작해야한다고 읽었습니다.

다음은 Clang 정적 분석기를 사용했으며 정적 분석의 관점에서 버그가없는 앱을 해결 한 후 7 개의 버그 만 제공했습니다.

두 분석 누수가 모두 다릅니다.

아직 계측기로 테스트해도 누설이 계속됩니다.

그래서 제 질문은 .. 그 내가 그 소리 정적 분석 결과 나 악기 결과에 의존해야

답변

5

입니다 그들은 무료 도구가있어 두 개의 매우 다른 방식으로 코드에서 자리 문제. 둘 다 사용해야합니다.

+0

그래서 버그가 없다고 말하면 다른 사람은 "아직 버그가 있습니다"라고 말하면 하나라도 받아 들일 수 있습니까? – harshalb

+1

Clang은 코드에 버그가 없다고 말하지 않습니다. 그것은 단지 7 개의 벌레 만 보았다고 말하는 것입니다. 스티븐이 말했듯이, 두 가지 문제는 모두 다르다. 문제가 발생하면이를 신뢰해야합니다. – Chuck

+0

ok thanks Chuck ... – harshalb

1

"결과가 없음"을 말하는 것은 버그가 없다는 것을 의미하지는 않습니다. 그것은 "CLANG"이 발견 할 수있는 모든 문제를 발견했음을 의미합니다. 누수 도구가 누출로 간주하는 모든 문제를 찾을 수없는 것처럼 감지 할 수없는 몇 가지 사항이 있기 때문에 실제로 실행하는 동안 테스트 한 앱 영역에서만 문제를 찾을 수 있습니다.

생각해보세요. 코끼리로 응용 프로그램에서 버그의 전반적인 상태 및 Xcode에서 다양한 디버깅 도구를 시도하고 그것의 모양을 파악하는 맹인의 안정으로. 코끼리에 던진 소경 환자가 있으면 문제의 모양을 대략적으로 알 수 있습니다. 그래서 가능한 모든 도구를 사용해야합니다.

추가 CLAG 제거 기능을 사용하려면 컴파일러 유형을 CLANG/LLVM으로 설정하십시오. 해당 설정으로 시뮬레이터 용으로 만 컴파일 할 수 있지만 정적 분석기와 함께 사용하면 더 많은 문제점을 찾을 수 있습니다.

+0

"CLAG 제거 능력을 높이려면 컴파일러 유형을 CLANG/LLVM으로 설정 하시겠습니까?" – harshalb

+0

프로젝트 설정 열기 빌드 탭을 선택하십시오. "C/C++ 컴파일러 버전"으로 스크롤하십시오. 드롭 다운을 "CLANG LLVM 1.0"으로 변경하십시오. 장치를 컴파일하기 전에 설정을 해제하는 것을 잊지 마십시오. 보통이 기능을 사용하여 별도의 디버그 구성을 만들어 신속하게 실행할 수 있습니다. –

1

당신은 서로에 의존해서는 안되며, 둘 다 매우 다른 일을해야합니다. clang을 사용하여 테스트하기 전에 잠재적 인 문제를 발견 한 다음 계측기를 사용하여 테스트하십시오.

또한 시뮬레이터와 장치가 모두있는 계측기를 사용해야합니다. 메모리 관리 모범 사례를 따르는 경우 누출은 거의 없지만 clang과 계측기는 누출을 추적하는 유용한 도구입니다.

0

Clang은 메모리 관리 관행을 보장하기 위해 컴파일 타임에 작동하는 정적 분석기입니다 코드에서. 그러나 Instrument는 장치 메모리의 런타임 분석을위한 도구입니다.

기기는 iOS 기기에서 애플리케이션을 시작할 때만 사용해야합니다. iOS 시뮬레이터에서 응용 프로그램을 시작할 때 악기를 사용하면 안됩니다.

더 나은 iOS 응용 프로그램을 제공하려면 우리는 Clang 정적 분석기와 인스트루먼츠에 의존해야합니다.

관련 문제