Ejecuté el script de configuración con la --enable-debug
bandera, luego ejecuté make
. Estoy ejecutando pruebas unitarias:
gdb --args src/test/test_bitcoin --log_level=all --run_test=script_standard_tests
Estoy tratando de pasar por la ejecución de los archivos fuente usando gdb, pero todavía obtengo <optimized out>
muchas variables y se saltan líneas aquí y allá. Pensé que la --enable-debug
bandera desactivaría la optimización, pero ¿me equivoco? Me pregunto si la optimización siempre está activada para las pruebas o si hay alguna forma de desactivarlas.
Bitcoin Core se deshabilita -O2
y se habilita -Og
cuando --enable-debug
está configurado. -Og
está destinado a la depuración; sin embargo, elimina parte de la información de depuración y tiene errores. Para deshabilitarlo y mejorar la experiencia de depuración, sugiero cambiar entre L256 y L278 a:
CXXFLAGS="-ggdb3 -ftrapv"
-ggdb3
es más poderoso que -g3
, utiliza un dialecto incompatible con LLDB solo para GDB para la depuración. Esto también eliminará -O2
, excepto en libsecp256k1.
Editar: Sipa sugiere una forma más elegante sin alterar los archivos autoconf, que es agregar argumentos para configurar.
./configure CXXFLAGS="-O0 -ggdb3"
O0 es necesario en este caso.
A partir de PR # 16435, --enable-debug
en realidad está configurando "-O0", por lo que ya no debería haber ninguna optimización.
JBaczuk
<optimized out>
, sin embargo, me debe estar perdiendo algo.JBaczuk
MCCCS
pieter wuille
pieter wuille
./configure CXXFLAGS="-O0 -ggdb3" ...
.MCCCS
pieter wuille
--enable-debug
pasará-Og
, lo que anula el-O0
valor predeterminado.JBaczuk
--enable-debug
usa-O0
?