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
inserte la descripción de la imagen aquí
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.

inserte la descripción de la imagen aquí
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
inserte la descripción de la imagen aquí
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 enabledsiempre que xxxno sea igual a 1, ¡la actualización es exitosa!
inserte la descripción de la imagen aquí

Errores comunes:

  1. enable pretty-printerSe muestra después de input 1 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
  2. Recuerda instalar texinfo con antelación
  3. 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
inserte la descripción de la imagen aquí
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

  1. Centos7 [instalar/actualizar] GDB
  2. Ocurrió un error al compilar gdb en centos: línea 81: makeinfo: comando no encontrado
  3. configuración de gdb imprimiendo script de contenedor STL impresora bonita
  4. Función Pretty Printer de GDB
  5. Introducción a la visualización de contenedores 01_gdb
  6. 02_gdb_pretty_printer principio de carga

Supongo que te gusta

Origin blog.csdn.net/baoxin1100/article/details/127432625
Recomendado
Clasificación