1. ホーム
  2. gdb

[解決済み] gdbで<value optimized out>は何を意味するのですか?

2023-02-14 11:15:54

質問

(gdb) n
134   a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
(gdb) n
(gdb) p a
$30 = <value optimized out>
(gdb) p b
$31 = <value optimized out>
(gdb) p c
$32 = 3735928563

gdbはどのように私の値を最適化することができますか?

どのように解決するのですか?

でコンパイルしたということです。 gcc -O3 でコンパイルされ、gcc のオプティマイザーが変数のいくつかが何らかの方法で冗長であることを発見し、それらを最適化することができたということです。このケースでは、同じ値を持つ3つの変数a, b, cがあり、おそらくこれらはすべて1つの変数にエイリアスすることができると思われます。最適化を無効にしてコンパイルしてください、例えば gcc -O0 など、最適化を無効にしてコンパイルしてください (これは一般的に、デバッグビルドのための良いアイデアです)。