Cómo obtener automáticamente el stack trace cuando un programa en C++ falla
¡Hola a todos! Escribo en C++ bajo Linux con el compilador GCC, y constantemente tengo problemas para depurar errores difíciles de detectar. El programa falla con segmentation fault, pero no puedo entender dónde ocurre exactamente porque el fallo es raro y en lugares aleatorios.
Ya uso asserts, pero no ayudan cuando el error está relacionado con corrupción de memoria o desbordamiento de buffer. Quiero que ante cualquier crash (SIGSEGV, SIGABRT, SIGFPE, etc.) el programa muestre automáticamente el stack trace completo con nombres de funciones, archivos y números de línea.
Aquí hay un ejemplo de mi código que falla:
```cpp
#include
#include
void dangerous_function(int* ptr) {
*ptr = 42; // Aquí puede haber segfault si ptr == nullptr
}
int main() {
std::vector vec(10);
int* bad_ptr = nullptr;
dangerous_function(bad_ptr); // ¡Accidente!
return 0;
}
```
He oído sobre backtrace() y backtrace_symbols(), pero solo devuelven direcciones, no nombres legibles. ¿Cómo se
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Cómo aprender Python rápidamente y encontrar tu primer trabajo: Plazos, consejos y ejemplos reales
Las mejores IDE y herramientas para el desarrollo con TypeScript en 2024
Atrapa el error por la cola: cómo convertir un stack trace en una cadena en Java
NullPointerException en fragmento de Kotlin: cómo vencerlo y no volverse loco