He compilado GDB a partir del código fuente en macOS 12.0 y lo he firmado. Sin embargo, cada vez que intento depurar un programa, obtengo esto:
(gdb) b main
Punto de interrupción 1 at 0x10000324f: archivo main.cpp, línea 50.
(gdb) run
Iniciando programa: /Users/fluzzlesnuff/Documents/C++/a.out
[Nuevo Hilo 0x2a03 del proceso 2389]
y luego GDB se cuelga. He estado compilando programas en C++ con g++. Aquí hay algunas cosas que he intentado:
- Compilar con la opción -g.
- Compilar con la opción -ggdb.
- Compilar con la opción -ggdb3.
- Ejecutar con
sudo
- Matar y volver a ejecutar gdb repetidamente.
- Probar diferentes binarios.
- Desactivar SIP
- Agregar más breakpoints.
set startup-with-shell off
en.gdbinit
No recibo errores de taskgated / Mach Port; solo el mensaje de Nuevo Hilo.
Sé que esto es casi una duplicación de este, pero no vi una respuesta funcional en esa pregunta.
Para referencia, aquí están mis versiones:
$ g++ --version
Versión de Apple clang 12.0.0 (clang-1200.0.32.29)
Objetivo: x86_64-apple-darwin21.0.0
Modelo de hilos: posix
Directorio instalado: /Library/Developer/CommandLineTools/usr/bin
$ gdb --version
GNU gdb (GDB) 10.2
0 votos
Como estás utilizando clang, puede ser una mejor idea utilizar lldb (como se usa en Xcode) como depurador. Creo que gdb está más alineado para usarse con GNU cc, que no es tu g++
0 votos
g++
es un alias degcc
con algunas opciones de C++, por lo que definitivamente es de GNU. gcc.gnu.org0 votos
Eso no es lo que muestras en la pregunta, el resultado de g++ --version dice que es clang
0 votos
Estaba pensando en eso. Acabo de enterarme de que g++ es realmente clang++ disfrazado. Esta es probablemente la fuente de mis problemas.
1 votos
Si estás dispuesto a usar
lldb
, puedes evitar esto por completo y tener un depurador funcional. No pude hacer funcionargdb
y tuve este mismo error. No hay ningún problema con lldb, que proporciona funcionalidades muy similares.0 votos
@MattKneiser ¿tiene
lldb
un equivalente degdb
follow-fork-mode child
que le permita ocupar el lugar degdb
todavía?