Phụ thuộc và điều này thường đúng với tất cả các công cụ không chỉ C30.
Tối ưu hóa thường loại bỏ và / hoặc cơ cấu lại mã theo nhiều cách khác nhau. Câu lệnh chuyển đổi của bạn có thể được thực hiện lại với cấu trúc if / other hoặc trong một số trường hợp có thể được xóa tất cả cùng nhau. y = x * 16 có thể được thay thế bằng một loạt các dịch chuyển trái, v.v. mặc dù loại tối ưu hóa cuối cùng này thường vẫn có thể được thực hiện, nhưng chủ yếu là cấu trúc lại câu lệnh điều khiển được ya.
Điều này có thể khiến trình gỡ lỗi không thể chuyển qua mã C của bạn vì các cấu trúc bạn xác định trong C không còn tồn tại, chúng được trình biên dịch thay thế hoặc sắp xếp lại thành thứ gì đó mà trình biên dịch tin rằng sẽ nhanh hơn hoặc sử dụng ít dung lượng hơn. Nó cũng có thể làm cho các điểm dừng không thể được thiết lập từ danh sách C vì hướng dẫn mà bạn ngắt có thể không còn tồn tại. Ví dụ: bạn có thể cố gắng đặt điểm dừng bên trong câu lệnh if, nhưng trình biên dịch có thể đã loại bỏ if đó. Bạn có thể cố gắng thiết lập một điểm dừng bên trong một vòng lặp hoặc cho vòng lặp nhưng trình biên dịch đã quyết định hủy bỏ vòng lặp đó để nó không còn tồn tại.
Vì lý do này nếu bạn có thể gỡ lỗi với tối ưu hóa, nó thường dễ dàng hơn. Bạn nên luôn luôn kiểm tra lại với tối ưu hóa trên. Đây là về cách duy nhất bạn sẽ phát hiện ra rằng bạn đã bỏ lỡ một điều quan trọngvolatile
và nó gây ra những thất bại không liên tục (hoặc một số điều kỳ lạ khác).
Trong trường hợp phát triển nhúng, dù sao bạn cũng phải cẩn thận với việc tối ưu hóa. Cụ thể trong các phần của mã là thời gian quan trọng, ví dụ một số ngắt. Trong các trường hợp này, bạn nên mã hóa các bit quan trọng trong lắp ráp hoặc sử dụng các chỉ thị của trình biên dịch để đảm bảo các phần này không được tối ưu hóa để bạn biết chúng có thời gian thực hiện cố định hoặc thời gian chạy trường hợp xấu nhất cố định.
Các Gotcha khác có thể phù hợp mã vào uC, bạn có thể cần tối ưu hóa mật độ mã để đơn giản phù hợp với mã của bạn vào chip. Đây là một lý do tại sao thường là một ý tưởng tốt để bắt đầu với uC dung lượng ROM lớn nhất trong một gia đình và chỉ chọn một cái nhỏ hơn để sản xuất, sau khi mã của bạn bị khóa.