Que signifie dans gdb?

(gdb) n 134 a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; (gdb) n (gdb) pa $30 =  (gdb) pb $31 =  (gdb) pc $32 = 3735928563 

Comment gdb peut-il optimiser ma valeur?

Cela signifie que vous avez compilé avec, par exemple, gcc -O3 et l’optimiseur gcc a constaté que certaines de vos variables étaient redondantes d’une manière qui leur permettait d’être optimisées. Dans ce cas particulier, vous semblez avoir trois variables a, b, c de même valeur et elles peuvent toutes être associées à une seule variable. Comstackr avec l’optimisation désactivée, par exemple gcc -O0 , si vous voulez voir de telles variables (c’est généralement une bonne idée pour les versions de débogage dans tous les cas).

Ça n’a pas été le cas. Votre compilateur l’a fait, mais il y a toujours un symbole de débogage pour le nom de la variable d’origine.

De https://idlebox.net/2010/apidocs/gdb-7.0.zip/gdb_9.html

Les valeurs des arguments qui n’ont pas été enregistrés dans leurs frameworks de stack sont affichées en tant que valeur optimisée.

Je suppose que vous avez compilé avec -O (somevalue) et accédez aux variables a, b, c dans une fonction où une optimisation a eu lieu.

Il suffit de lancer “export COPTS = ‘- g -O0’;” et reconstruisez votre code. Après la reconstruction, déboguez-le avec gdb. Vous ne verrez pas une telle erreur. Merci.