在c ++中打印完整的回溯

我想在Linux中以类似于gdb的格式从C ++程序转储回溯。 我试图使用backtrace()和backtrace_symbols()函数来达到这个目的。 这些返回的函数名称和偏移量。 我可以使用__cxa_demangle()函数来获取可读的函数名称。

有没有办法获得文件/行位置,因为它是由gdb完成的?

如何从程序中调用gdb来打印它的堆栈跟踪? `

Methode#4,显示了获取文件名和行的方法。 但是使用一个extern程序..