2014-05-06 10 views
12

In una build di rilascio ricevo il seguente avviso informativo da GCC 4.4.7.Regolazione della lunghezza dell'assegnazione tracciabile variabile

nota: limite di dimensione variabile di monitoraggio superato con -fvar-tracking-assegnazioni, riprovare senza

Ho superato la lunghezza nome della variabile supportata da assegnazione di monitoraggio variabili?
Se sì, c'è un modo per regolare le dimensioni supportate?

+0

Questo sembra accadere con Clang; ma Clang non produce il messaggio utile. E sembra accadere più spesso in GCC e Clang quando si utilizza il disinfettante comportamento non definito. – jww

risposta

13

Questa è solo una nota del compilatore che le informazioni di debug per la particolare funzione avrà qualità inferiore, perché il codice della funzione è troppo grande/complesso di monitoraggio in modo variabile raggiunto il limite di slot tabella hash.

La massima è probabile sacco di milioni di persone e può essere sollevato con qualcosa (come --param=max-vartrack-size=60000000), ma si potrebbe finire con molto compilazione lenta o il compilatore potrebbe prendere molto molta memoria per calcolare le informazioni di debug posizione liste .

Quindi, a meno che non si riscontrino problemi nel debug del codice, ignorare tale avviso.

+1

Sì, l'unico svantaggio è che il file viene compilato due volte. Cordiali saluti, ottenendo questo errore su un test di grande unità .cpp. – paxos1977

+0

* "Quindi, a meno che non abbiate problemi con il debug del codice ignorate semplicemente questo avvertimento ..." * - E i timeout dell'elemento di configurazione che causano il fallimento della compilazione? Dato che so che un file è un problema, dovrei semplicemente usare '-fno-var-tracking-assignments'? – jww

+0

@jww I timeout CI vengono sorvegliati se si verifica un problema durante l'esecuzione del servizio CI. Quando la compilazione richiede solo molto tempo, possiamo regolare il timeout. –