c++ - ¿Hay una biblioteca llamada a addr2line?
linux backtrace (2)
Necesito obtener la información provista por addr2line (archivo y línea del backtracing de una llamada de función) desde dentro de un programa C ++. ¿Hay una llamada de biblioteca similar a addr2line?
Edición: estoy trabajando en un entorno Linux.
Sé que puedo llamar a addr2line directamente y sé que puedo usar el código fuente de addr2line en mi programa (que también tiene licencia GPL). Pero supongo que llamar a una función de biblioteca, si existe, es más limpio.
Edición: Usaré bfd de binutils, tal como lo hace addr2line. ¿Qué significa bfd de todos modos?
Puedes probar la función dladdr()
. Utiliza los símbolos dinámicos del programa, no la información de depuración (compile el programa con gcc -rdynamic
).
Además, puede consultar la biblioteca de stacktrace o la biblioteca de stacktrace nivel superior.
No es exactamente lo que estás preguntando, pero pueden resultar útiles.
Verifique el código fuente de la implementación de bsd de addr2line, ya que solo tiene alrededor de 400 líneas de código. Cambiar la fuente a una función de biblioteca debería ser muy fácil. http://sourceforge.net/apps/trac/elftoolchain/browser/trunk/addr2line/addr2line.c