다음 질문에 의아해했습니다. "정적"레이블의 장점을 유지하면서도 사이트에서 프로덕션 코드를 디버깅하는 방법은 무엇입니까?정적과 비 정적 함수 - 디버깅 임베디드 시스템 컨텍스트
의도하지 않은 동작이 고객 사이트에서 발생하고 한 번도 발생하지 않습니다. 대부분의 경우 디버그를 수행하는 옵션을 사용하면 많은 노력을 절약하고 매우 빠른 응답을 제공 할 수 있습니다. 이러한 디버그는 일반적으로 "정적"정의로 우리를 데려 함수의 동작을 확인 포함됩니다.
정적 함수는 중단 점 넣기 또는 실행과 같은 디버그 셸에서 디버깅 할 수 없습니다. 반면에 모든 함수를 public으로 정의하면 코드 구조와 최적화 슬픔이 발생합니다.
적어도 두 가지 다른 빌드를 컴파일하는 것과 같은 옵션이 있음을 알고 있습니다. 하나는 정적 및 하나는없는 빌드이지만, 이것은 자동화 테스트에 적합하고 결국에는 최종 생산 빌드가 적합하지 않습니다.
당신의 측면에서 약간의 통찰력을 얻었습니다. 주로이 딜레마를 어떻게 해결했는지에 대한 평가가있었습니다. 또는 그 질문에 대한 답을 ""더 중요합니다. "
C here의"정적 "에 대한 좋은 토론입니다.
'static'으로 선언 된 함수에 중단 점을 설정할 수 없다는 것을 의미합니까? C에서 static 함수는 정상적인 함수이지만 다른 "번역 단위"에서는 호출 할 수 없습니다. 최적화되지 않은 경우 원격 디버깅이나 로컬 디버깅을 막지 않아야합니다. –
정적 함수에 전역 포인터를 정의하고 그 값을 사용하여 정적 함수에 중단 점을 설정할 수 있습니다. 컴파일러가이를 사용하지 않는 것으로 제거하지 못하도록이 포인터를 '휘발성'으로 만들 수도 있습니다. –
@JoachimPileborg 정적 함수는 (컴파일러를 사용하여 플래그가 지정된 경우에도) 심볼 테이블에 들어 가지 않으므로 디버깅이 불가능합니다 (중단 점과 같은). – EdwardH