Menangkap Kesalahan Segmentasi dalam Linux Menggunakan Pengecualian
Dalam senario tertentu, seperti semasa operasi pembersihan perpustakaan pihak ketiga, anda boleh menghadapi kesalahan segmentasi. Walaupun menangani punca adalah ideal, ia mungkin tidak selalu dapat dilaksanakan. Dalam artikel ini, kami akan meneroka cara untuk menangkap kesalahan pembahagian dalam persekitaran Linux menggunakan gcc, menyediakan penyelesaian merentas platform.
Pada sistem Linux, kesilapan pembahagian boleh dianggap sebagai pengecualian. Untuk mengendalikan pengecualian ini, anda boleh menyediakan pengendali isyarat tersuai untuk isyarat SIGSEGV, yang dijana apabila ralat pembahagian berlaku. Walau bagaimanapun, adalah penting untuk memastikan program anda boleh pulih dengan anggun daripada situasi sedemikian.
Sesetengah perpustakaan telah melaksanakan fungsi seperti pengecualian untuk pengendalian isyarat. Antaranya ialah perpustakaan libctftext. Dengan perpustakaan ini, anda boleh menulis kod yang menyerupai:
try { *(int*) 0 = 0; } catch (std::exception& e) { std::cerr << "Exception caught : " << e.what() << std::endl; }
Pustaka ini menawarkan bahagian belakang khusus platform yang menyokong seni bina x86 dan x86-64 di luar kotak. Untuk platform lain, anda mungkin perlu mendapatkan hujung belakang daripada sumber gcc (libjava).
Atas ialah kandungan terperinci Bolehkah Kesalahan Segmentasi Ditangkap dan Dikendalikan dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!