actualización de centos soporte gdb impresora bonita
Causa: El gdb-7.6.1 que viene con los centos de la empresa no tiene la función de impresora bonita, por lo que se actualizó a gdb-8.1 y es compatible con la impresora bonita para facilitar la depuración del código C++ El siguiente es el proceso de pasos.
descripción de la impresora bonita
pretty-printer permite que gdb muestre STL en estilo python durante la depuración, lo cual es muy conveniente para la depuración. Por ejemplo, cuando el código contiene vectores y cadenas, gdb no habilita pretty-printer para la depuración, y la ventana de variables muestra Dirección de memoria
abierta pretty-printer para la depuración, el contenedor es como una matriz, el contenido interior es claro y la cadena también muestra directamente el contenido.
Desafortunadamente, la función de impresora bonita debe habilitarse manualmente al compilar GDB, así que comencemos.
actualizar gdb
Desinstalar el GDB incorporado
sudo yum remove -y gdb
Asegúrese de que texinfo esté instalado
sudo yum install -y texinfo
Descargue el código fuente de GDB-8.1, puede haber problemas con versiones superiores.
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gdb/gdb-8.1.tar.gz --no-check-certificate
Descomprimir, compilar e instalar GDB-8.1
cd gdb-8.1
./configure --with-python=yes
make -j16
sudo make install
Si falta un python o se informa un error inutilizable durante la compilación, o si desea especificar la versión de python usted mismo, debe mostrar la ruta de python especificada
./configure --with-python='/usr/bin/python2.7'
configurar.gdbinit
Primero verifique si gdb está instalado correctamente, ingrese gdb -config
, si hay -with-python, la instalación es exitosa
Cree un archivo .gdbinit, que se ejecutará automáticamente cada vez que inicie gdb
touch ~/.gdbinit
Ingresa el siguiente contenido
set print pretty on
set print object on
set print static-members on
set print demangle on
set print sevenbit-strings off
python
import sys
sys.path.insert(0, '/usr/share/gcc-4.8.2/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
El último paso es verificar si la configuración es exitosa, iniciar gdb y habilitar la impresora bonita, como se muestra en la figura a continuación, xxx of xxx printers enabled
siempre que xxx
no sea igual a 1, ¡la actualización es exitosa!
Errores comunes:
enable pretty-printer
Se muestra después de input1 of 1 printers enabled
, lo que indica que la impresora bonita no se pudo iniciar, lo que probablemente se deba a que no se configuró gdbinit- Recuerda instalar texinfo con antelación
- En la oración sys.path.insert(0, '/usr/share/gcc-4.8.2/python') en .gdbinit, cambie la ruta a la suya, generalmente '/usr/share/gcc-4.8/python' , recuerda no escribir /usr/bin/python, estos dos son diferentes
la depuración de vscode abre una impresora bonita
Ingrese ctrl+shift+p, ingrese depurar, seleccione
para generar automáticamente launch.json y complete el siguiente contenido (si ya existe)
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
conclusión
De hecho, es muy simple y no hay muchos pasos, pero las trampas de cada blog son diferentes. Tal vez algunas personas puedan tener éxito sin pasos tan completos. Los artículos de referencia se enumeran a continuación.
blog de referencia
- Centos7 [instalar/actualizar] GDB
- Ocurrió un error al compilar gdb en centos: línea 81: makeinfo: comando no encontrado
- configuración de gdb imprimiendo script de contenedor STL impresora bonita
- Función Pretty Printer de GDB
- Introducción a la visualización de contenedores 01_gdb
- 02_gdb_pretty_printer principio de carga