ID Artikel: 000085705 Jenis Konten: Pemecahan Masalah Terakhir Ditinjau: 19/05/2015

Mengapa saya melihat crash saat menggunakan dereferensi penunjuk Null di Rantai Alat nios2-elf-gcc 4.9?

Lingkungan

    Intel® Quartus® II Edisi Berlangganan
    Prosesor Intel® Nios® II
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Deskripsi

Dalam Quartus® Perangkat lunak II versi 15.0, Nios® Kode II dikompilasi menggunakan rantai alat nios2-elf-gcc 4.9. Saat mengkompilasi kode di -O2 (atau lebih tinggi) dengan rantai alat nios2-elf-gcc 4.9, optimisasi -fisolate-erroneous-paths-dereference akan diaktifkan secara bawaan.

 

Sebagaimana dijelaskan dalam

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options,

 

-fisolate-erroneous-paths-dereference

Mendeteksi jalur yang memicu perilaku keliru atau tidak terdefinis karena dereferensi penunjuk nol. Isolasi jalur tersebut dari alur kontrol utama dan ubah pernyataan dengan perilaku keliru atau tidak terdefinisi menjadi perangkap. Flag ini diaktifkan secara bawaan pada -O2 dan yang lebih tinggi.

 

Optimisasi ini berarti ketika rantai alat mendeteksi kode sedang mencoba memuat atau menyimpan melalui penunjuk nol yang memungkinkan, ia akan mengubah muatan atau menyimpan pernyataan menjadi instruksi perangkap. Hal ini dapat menyebabkan program tertanam lumpuh tanpa peringatan waktu kompilasi.

Resolusi

Jika desain Anda berisi data yang valid di alamat nol, kompilasi kode Anda menggunakan sakelar berikut untuk menghindari masalah yang terkait dengan dereferensi penunjuk nol:

 

-fno-delete-null-pointer-checks

Produk Terkait

Artikel ini berlaku untuk 1 produk

Perangkat yang Dapat Diprogram Intel®

1

Konten pada halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten asli berbahasa Inggris. Konten ini disediakan untuk kenyamanan Anda dan hanya untuk informasi umum dan tidak boleh dianggap lengkap atau akurat. Jika ada kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris yang akan mengatur dan mengendalikan. Lihat versi bahasa Inggris halaman ini.