Si je comprend bien, -O0 n'a vraiment d’intérêt que lorsqu'il est couplé avec -g.
Oui, je ne vois pas trop un autre intérêt à utiliser -O0.
Ha si, si tu veux regarder la sortie assembleur : ça sera peut-être un poil plus lisible qu‘un truc optimisé à mort.
Dans ce cas, j'ai du mal a comprendre pourquoi autoriser a coupler du -O2 voire -O3 avec -g? Les performances vont être meilleures, mais le debugging va être beaucoup plus compliqué. Il me semble que si l'on utilise -g, c'est le debugging qui prime. Non?
Bah y’a des fois tu as des bugs qui ne se produisent qu‘en version optimisé.
Ou encore, sans optimisation c’est vraiment trop lent à tourner et le débogage devient laborieux (ou alors tu fais des timeout sur certains trucs).
Donc oui, c’est plutôt rare de mixer les deux mais parfois on en a besoin.
Oui, le débogage va être un peu plus difficile pour les raisons cité (changement de comportement pas endroits). D’ailleurs le man de gcc en parle :
GCC allows you to use -g with -O. The shortcuts taken by optimized code may occasionally produce surprising results: some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values were already at hand; some statements may execute in different places because they were moved out of loops.
Nevertheless it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs.
Mais bon, au moins tu auras les symboles et d‘autres petites choses appréciables.
D’ailleurs à ce sujet, si tu sais que tu va déboguer avec gdb il y a une option bien meilleur que -g, c‘est -ggdb
[^] # Re: TCC ?
Posté par grim7reaper . En réponse à la dépêche LLVM 3.3 et Clang 3.3. Évalué à 3.
Oui, je ne vois pas trop un autre intérêt à utiliser -O0.
Ha si, si tu veux regarder la sortie assembleur : ça sera peut-être un poil plus lisible qu‘un truc optimisé à mort.
Bah y’a des fois tu as des bugs qui ne se produisent qu‘en version optimisé.
Ou encore, sans optimisation c’est vraiment trop lent à tourner et le débogage devient laborieux (ou alors tu fais des timeout sur certains trucs).
Donc oui, c’est plutôt rare de mixer les deux mais parfois on en a besoin.
Oui, le débogage va être un peu plus difficile pour les raisons cité (changement de comportement pas endroits). D’ailleurs le man de gcc en parle :
Mais bon, au moins tu auras les symboles et d‘autres petites choses appréciables.
D’ailleurs à ce sujet, si tu sais que tu va déboguer avec gdb il y a une option bien meilleur que -g, c‘est -ggdb