Flamboyan


Senjata Rahasia Favorit Saya

Mungkin karena mereka tidak diajarkan di perguruan tinggi, pengembang sering tidak menyadari bahwa alat ini ada, yang memalukan, karena bermain dengan mereka dapat memberikan pemahaman yang lebih dalam tentang apa yang terjadi dan pada akhirnya mengarah pada kode yang lebih baik. Biasanya ini tidak melibatkan pengetahuan tentang panggilan API atau sintaksis, melainkan semacam wawasan tentang apa alat yang tepat untuk digunakan, dan mengapa dan bagaimana menggunakannya. Saya sering ditanya dalam pekerjaan pemecahan masalah teknis saya untuk memecahkan masalah yang tidak dapat dipecahkan oleh tim pengembangan. Anda tidak memiliki sumbernya, dan bahkan jika Anda memilikinya, kode sumbernya tidak tersedia, tidak siap untuk dikompilasi, maupun siap dapat dipahami Bayangkan Anda mencoba memulai sebuah executable, tetapi gagal secara diam-diam. Anda juga dapat mencari online jika Anda memiliki akses, tetapi jika Anda dapat menginstal secara otomatis melalui manajer paket, Anda akan lebih mungkin mendapatkan dokumen yang cocok dengan instalasi Anda. Di ubuntu dan distribusi linux terkait, dokumentasi ada dalam paket manpages-dev, dan dapat dipanggil oleh mis. Man 2 bind. Anda perlu mendapatkan salinan dokumentasi pemanggilan sistem. Jika Anda sering melakukan ini, atau jalankan strace dengan santai pada berbagai perintah dan telusuri hasilnya, Anda dapat mempelajari segala macam hal tentang internal OS Anda. Misalnya, baru saja saya melihat file /etc/gai.conf, yang tidak pernah saya temui sebelum menulis ini. Jika Anda menyukai saya, ini adalah cara yang bagus untuk mempelajari cara kerja berbagai hal.
Setelah Anda tertarik, saya sarankan untuk mendapatkan salinan "Pemrograman Tingkat Lanjut di Lingkungan Unix" oleh Stevens & Rago, dan membacanya dari depan hingga belakang. Tidak semua akan masuk, tetapi saat Anda menggunakan strace semakin banyak, dan menelusuri kode C semakin banyak pemahaman akan tumbuh. Jika Anda menjalankan program yang memanggil program lain, penting untuk dijalankan dengan flag -f, yang "mengikuti" proses anak dan mengikatnya. -ff membuat file terpisah dengan pid suffixed ke namanya. (source)