Залежить, і це, як правило, стосується всіх інструментів, а не лише C30.
Оптимізації часто видаляють та / або реструктурують код різними способами. Ваша операція перемикання може повторно доповнити конструкцію if / else або в деяких випадках може бути видалена всі разом. y = x * 16 може бути замінено рядом лівих зрушень і т. д., хоча цей останній тип оптимізації зазвичай все-таки можна пройти через його, головним чином, реструктуризацію оператора управління, який отримує ya.
Це може унеможливити перехід налагоджувача через ваш код C, оскільки структури, визначені вами C, більше не існують, їх замінив або переупорядкував компілятор на те, на що, на думку компілятора, буде швидше або використовуватиме менше місця. Це також може зробити неможливим встановлення точок перерви з переліку С, оскільки інструкція, на яку ви перебиваєтесь, більше не може існувати. Наприклад, ви можете спробувати встановити точку зламу всередині оператора if, але компілятор, можливо, видалив це, якщо. Ви можете спробувати встановити точку розриву протягом певного часу або для циклу, але компілятор вирішив розкрутити цю петлю, щоб вона більше не існувала.
З цієї причини, якщо ви можете виправити налагодження з оптимізаціями, зазвичай це простіше. Ви завжди повинні повторно протестувати з оптимізаціями. Це приблизно єдиний спосіб, коли ви дізнаєтесь, що ви пропустили важливе значення, яке volatile
спричиняє невдалі збої (або якісь інші дивацтва).
Що стосується вбудованої розробки, то в будь-якому випадку потрібно бути обережним з оптимізаціями. Зокрема, в розділах коду, які мають критичний час, наприклад, деякі переривання. У цих випадках слід або кодувати критичні біти при складанні, або використовувати директиви компілятора, щоб переконатися, що ці розділи не оптимізовані, щоб ви знали, що у них є фіксований час виконання або фіксований найгірший час виконання.
Інший gotcha може бути примірником коду до UC, можливо, вам знадобляться оптимізації щільності коду, щоб просто вписати свій код у чіп. Це одна з причин, чому зазвичай хороша ідея починати з найбільшої ємності ПЗУ в сім’ї і вибирати лише менший для виготовлення, після того як ваш код буде заблокований.