Tergantung, dan ini umumnya berlaku untuk semua alat bukan hanya C30.
Optimasi sering kali menghapus dan / atau merestrukturisasi kode dengan berbagai cara. Pernyataan peralihan Anda mungkin diterapkan kembali dengan konstruksi if / else atau dalam beberapa kasus dapat dihapus secara bersamaan. y = x * 16 dapat diganti dengan serangkaian shift kiri, dll. meskipun jenis optimisasi terakhir ini biasanya masih dapat dilewati, sebagian besar merupakan restrukturisasi pernyataan kontrol yang dapat Anda lakukan.
Ini dapat membuat tidak mungkin untuk melangkah debugger melalui kode C Anda karena struktur yang Anda tetapkan dalam C tidak ada lagi, mereka diganti atau dipesan ulang oleh kompiler menjadi sesuatu yang diyakini kompiler akan lebih cepat atau menggunakan lebih sedikit ruang. Hal ini juga dapat membuat breakpoints mustahil untuk ditetapkan dari daftar C karena instruksi yang Anda hentikan mungkin tidak ada lagi. Sebagai contoh, Anda dapat mencoba untuk menetapkan breakpoint di dalam pernyataan if, tetapi kompiler mungkin telah menghapus itu jika. Anda dapat mencoba mengatur breakpoint di dalam while atau for loop tetapi kompiler memutuskan untuk membuka gulungan itu sehingga tidak ada lagi.
Untuk alasan ini jika Anda dapat men-debug dengan optimisasi tidak aktif, biasanya lebih mudah. Anda harus selalu menguji ulang dengan optimisasi aktif. Ini adalah satu-satunya cara Anda akan menemukan bahwa Anda melewatkan sesuatu yang penting volatile
dan menyebabkan kegagalan intermiten (atau keanehan lainnya).
Dalam kasus pengembangan yang disematkan, Anda harus berhati-hati dengan optimasi. Khususnya di bagian kode yang kritis waktu, beberapa menyela misalnya. Dalam kasus ini Anda harus mengkode bit kritis dalam perakitan atau menggunakan arahan kompiler untuk memastikan bagian ini tidak dioptimalkan sehingga Anda tahu mereka memiliki waktu eksekusi yang tetap atau waktu run kasus terburuk yang diperbaiki.
Gotcha lainnya dapat memasukkan kode ke dalam UC, Anda mungkin perlu optimasi kepadatan kode untuk memasukkan kode Anda ke dalam chip. Ini adalah salah satu alasan mengapa biasanya ide yang baik untuk memulai dengan kapasitas ROM terbesar UC dalam keluarga dan hanya memilih yang lebih kecil untuk pembuatan, setelah kode Anda dikunci.