바이너리 / 엘프 프로그램을 제거하는 요점은 무엇입니까?


9

프로그램 파일을 제거하면 디스크 공간을 절약하는 것보다 더 많은 이점이 있는지 궁금합니다.


CPU 또는 메모리를 저장합니까?

저장 공간이 부족한 임베디드 시스템에서는 디스크 공간이 절약됩니다.
Zoredache

wee 비트를 메모리에 저장합니다.
symcbean

답변:


8

대부분의 경우 주요 이점은 디스크 공간을 절약하는 것입니다. 이차적이고 훨씬 더 모호한 이점은 바이너리를 분해하거나 리버스 엔지니어링하기가 더 어렵다는 것입니다. 또한 메모리 풋 프린트를 약간 줄일 수도 있지만, 대부분의 경우 무시할만한 수준입니다.

가장 큰 단점은 문제가 발생하면 디버깅이 훨씬 어려워진다는 것입니다.

CPU가 최신 인 시스템과 메모리 / 디스크 수량을 가진 최신 시스템에서 바이너리를 제거하면 성능에 거의 영향을 미치지 않습니다. 실제로 디버깅, "청결성"및 개인 취향에 관한 것입니다. 일부 사람들은 항상 프로덕션 또는 "배송 된"소프트웨어에 스트립 된 바이너리를 사용하는 것을 선호합니다. 어떤 사람들은 항상 "경우에 따라"포함 된 기호를 남겨두기를 선호합니다.

개인적으로, 나는 기호를 포함하는 것을 선호합니다. 나는 상용 응용 프로그램이 segfaulting (또는 다른 방식으로 충돌하는) 일 년 동안 정말 실망스러운 몇 가지 상황을 겪었으며 바이너리가 제거 되었기 때문에 문제가 어디에 있는지 정확히 알 수 없었습니다. 적어도 몇 가지 경우에, 공급 업체는 다시 충돌 할 때까지 비 스트립 버전을 실행하여 더 유용한 디버깅 정보를 얻을 수있게되었습니다. 처음에 고정되지 않은 버전을 제공했다면 가동 중지 시간을 줄이면서 문제를 더 빨리 해결할 수있었습니다.


2
32MB NSLU2와 같이 메모리가 제한된 내장 시스템에 있지 않으면 동의합니다. RAM의 모든 바이트 수와 이진을 10 % 줄이면 이러한 시나리오에서 매우 일반적입니다. 나는 죽어 가거나 죽은 프로세스에 gdb를 붙였으며, unstripped 기호가 없다면 크릭이되었습니다. 필자는 스트립 기호가 메모리 절약 및 더 나은 캐시 라인 사용 만을 위한 것임을 강조 합니다. 그러나 최적화가 기대치를 무시할 수 있기 때문에 후자를 테스트하십시오.
zerolagtime

1
당신은 훌륭한 지적을합니다. 위의 의견은 일반적인 데스크탑 / 노트북 또는 서버 사용 시나리오에 유효하지만 바이너리를 제거하는 것은 종종 임베디드 및 특수 사용 시스템에서 큰 승리입니다.
Christopher Cashell

0

테스트를 위해 디버그 기호로 소프트웨어를 컴파일 한 다음 배포하기 위해 제거 할 수 있습니다. 디버깅 기호가 노출시키지 않을 것을 노출시키는 경우이 기능이 유용 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.