apa gunanya menelanjangi program biner / elf?

9

Saya hanya ingin tahu apakah menghapus file program memiliki manfaat lebih dari sekadar menghemat ruang disk.


sumber
apakah itu menghemat cpu atau memori?
Pada sistem tertanam yang penyimpanannya ketat, ini akan menghemat ruang disk.
Zoredache
Menghemat sedikit memori.
symcbean

Jawaban:

8

Manfaat utama, untuk sebagian besar kasus, hanya untuk menghemat ruang disk. Manfaat sekunder, dan jauh lebih meragukan, adalah bahwa itu juga membuat biner lebih sulit untuk dibongkar atau dibalik insinyur. Ini mungkin juga mengurangi jejak memori sedikit, meskipun dalam banyak kasus itu akan menjadi penghematan yang dapat diabaikan.

Kerugian terbesar adalah membuat debugging secara signifikan lebih sulit jika Anda mengalami masalah.

Pada sistem modern dengan kecepatan CPU seperti apa mereka, dan jumlah memori / disk apa adanya, menelanjangi biner akan memiliki dampak praktis yang sangat kecil pada kinerja dengan cara apa pun. Ini benar-benar tentang debugging, "kebersihan", dan preferensi pribadi. Beberapa orang lebih suka untuk selalu menggunakan binari yang dilucuti untuk produksi atau perangkat lunak "dikirim". Beberapa orang lebih suka untuk selalu meninggalkan simbol termasuk, "berjaga-jaga".

Secara pribadi, saya lebih suka menyertakan simbol. Saya memiliki beberapa situasi yang benar - benar membuat frustrasi sepanjang tahun di mana aplikasi komersial segfaulting (atau malah crash) dan saya tidak memiliki kemampuan untuk menentukan di mana masalahnya, karena binernya dilucuti. Setidaknya dalam beberapa kasus, vendor akhirnya mengirimi saya versi non-striped untuk dijalankan, sampai crash lagi, sehingga kami bisa mendapatkan informasi debug yang lebih berguna. Seandainya mereka menyediakan versi non-striped di awal, kita bisa menyelesaikan masalah lebih cepat dan dengan lebih sedikit downtime.

Christopher Cashell
sumber
2
Setuju kecuali Anda berada dalam sistem tertanam yang terbatas memori, seperti NSLU2 32MB. Setiap byte dalam jumlah RAM dan mencukur 10% dari biner sangat umum dalam skenario tersebut. Saya juga telah menempelkan gdb pada proses yang sekarat atau mati dan akan menjadi sungai jika bukan karena simbol yang tidak terhalang. Menurut saya pengupasan simbol hanya untuk konservasi memori dan penggunaan cache-line yang lebih baik. Tetapi uji yang terakhir karena optimasi mungkin mengabaikan harapan Anda.
zerolagtime
1
Anda membuat poin yang mengangumkan. Komentar saya di atas berlaku untuk skenario penggunaan desktop / laptop atau server yang khas, tetapi melucuti binari sering kali merupakan kemenangan besar dalam sistem embedded dan penggunaan khusus.
Christopher Cashell
0

Anda dapat mengkompilasi perangkat lunak dengan simbol debug untuk pengujian dan kemudian menghapusnya untuk penyebaran. jika simbol debugging Anda mengekspos sesuatu yang Anda tidak ingin mengekspos, ini mungkin berguna bagi Anda

Brad Clawsie
sumber