2009-11-05 3 views
0

바이너리 파일의 일부를 마스크 처리 할 수 ​​있도록 바이너리 diff 도구를 찾고 있습니다. 따라서이 파일을 고려하지 않을 것입니다.이진 diff와 마스킹 - 빌드의 일관성을 유지하는 데 필요합니다.

내가 직면 한 도전 과제는 다음과 같습니다. 임베디드 소프트웨어의 한 지점을 적극적으로 개발하고 나면이를 유지 관리에 투입합니다. 즉, 침식하지 않고 더 이상 만들 수 없는지 확인하기 위해 일주일에 한 번씩 빌드가 진행됩니다. 버그를 수정하거나 약간의 기능을 추가해야하는 경우 긴급히이 문제에 집중할 수 있고 다른 문제도 해결할 필요가 없도록해야합니다.

우리의 현재 접근 방식을 사용하면 브랜치가 오류없이 계속 빌드되지만 생성 된 바이너리가 여전히 동일한 지 여부는 알 수 없습니다. 그래서 "골든 마스터"바이너리를 빌드와 비교하여 동일성 여부를 결정하는 것이이 접근법이 될 것이라고 생각했습니다. 어쨌든, 파일은 비트와 동일하지 않습니다. 빌드 날짜는 바이너리의 일부입니다.

누구나 아이디어를 가지고 있거나 이전에이 퍼즐을 풀어 본 적이 있습니까? 나는이 도전에 직면 한 첫 번째 개발자가 아닌 것 같아요. 그들이 Glibc의 2.2 glibc에서 2.3로 전환 될 때

감사합니다, 마크

답변

0

The Linux from Scratch project이 문제에 실행, 나는 2001 년에 생각하는 그들은 소음의 양을 줄이기 위해 일부 스크립트와 기술을 개발,하지만 여전히 노이즈의 양을 줄입니다. 남은 차이점을 수동으로 검사해야했습니다. 어쨌든, 2001 년에서 2003 년 사이에 mailinglist archives 주위를 파다 보면 몇 가지 정보를 찾을 수 있습니다.

그러나이 잘못된 방향으로 가고 있지 않습니까? 내 말은 재미있는 질문은 여전히 ​​동일한 바이너리를 구축하는지 여부가 아니라, 여전히 이 작동하는지 여부일까요? 따라서 여전히 동일한 바이너리가 아닌 테스트 스위트를 통과 하느냐가 훨씬 더 흥미 롭습니다.

결국, 동작에 명백한 차이가없는 경우 아무래도 여전히 동일한 바이너리인지 아무도 염려하지 않습니다. 그리고 그것이 깨진다면, 아무도 "예, 알아요. 그러나 그것은 지난 주와 똑같은 방식으로 부서지기 때문에 그것을 증명할 수 있습니다!"라고 말할 것입니다. 변명으로.

+0

나는 의도적으로 이런 식으로 가고있다. 해당 장치에는 자동화 된 테스트가 없습니다. 수동으로 테스트하는 데는 많은 시간과 리소스가 소요됩니다. 이는 릴리스 후보 버전에서만 수행됩니다. 필자는 툴체인이 최신 릴리즈를 생성했을 때와 동일한 실행 파일을 생성 할 수 있도록 보장하고자합니다. 릴리스 간에는 3 년 정도면 쉽게 될 수 있습니다. 빌드 머신이나 운영 체제가 시간이 지남에 따라 침식 될 것이라는 두려움 때문에 일종의 테스트가 필요합니다. –

+0

그렇습니다. 바이너리가 3 년 전과 똑같은 방식으로 손상되었음을 증명할 수 있기를 바랍니다. –

관련 문제