Abhängt, und dies ist in der Regel gilt für alle Werkzeuge nicht nur C30.
Optimierungen oft entfernen und / oder Umstrukturierung des Codes auf verschiedene Weise. Ihre switch-Anweisung kann mit einem, wenn / else Konstrukt oder in einigen Fällen neu implementiert bekommen werden alle zusammen entfernt. y = x * 16 kann mit einer Reihe von Linksverschiebungen ersetzt bekommen, usw., obwohl diese letzte Art der Optimierung in der Regel nach wie vor durch verstärkt werden kann, seine meist die Umstrukturierung der Steueranweisung, ya bekommt.
Dies kann es unmöglich machen, einen Debugger durch Ihren C-Code zu führen, da die von Ihnen in C definierten Strukturen nicht mehr existieren. Sie wurden vom Compiler ersetzt oder neu angeordnet, sodass der Compiler der Ansicht ist, dass sie schneller sind oder weniger Speicherplatz beanspruchen. Es kann auch Ihr Bruch auf, nicht länger besteht, da die Anweisung Auflistung Stützpunkte unmöglich Satz aus dem C machen. Zum Beispiel können Sie versuchen, einen Haltepunkt in einer if-Anweisung zu setzen, aber der Compiler entfernt haben kann, dass, wenn. Sie können versuchen, einen Haltepunkt innerhalb einer while- oder for-Schleife zu setzen, aber der Compiler hat beschlossen, diese Schleife zu entrollen, damit sie nicht mehr existiert.
Aus diesem Grund können , wenn Sie mit Optimierungen debuggen aus, seine in der Regel einfacher. Sie sollten immer Retest mit Optimierungen auf. Dies ist über die einzige Art und Weise werden Sie feststellen , dass Sie einen wichtigen verpasst volatile
und seine was zu sporadischen Ausfällen (oder eine andere Seltsamkeit).
Im Fall der Embedded-Entwicklung, müssen Sie auf jeden Fall mit Optimierungen vorsichtig sein. Speziell in Codeabschnitten, das Timing kritisch, einige Interrupts zum Beispiel. In diesen Fällen sollten Sie entweder Code der kritischen Bits in der Montage oder Richtlinien Verwendung Compiler um sicherzustellen, dass diese Abschnitte nicht optimiert werden, so dass Sie wissen, dass sie eine feste Ausführungszeit oder eine Worst-Case-Laufzeit festgelegt.
Der andere gotcha kann Code in das uC werden passend, können Sie Codedichte Optimierungen müssen einfach den Code in den Chip passen.