在提出问题之前,我简要描述一下我如何从客户那里获得回溯。 我在 linux (opensuse) 上编写了一个 C++ 应用程序。
此应用程序由脚本(启动程序)启动,如果应用程序崩溃,则会生成核心转储(因为 ulimit -c unlimited)。 然后启动器从 gdb 的核心文件生成回溯,并再次启动应用程序,这使用户可以发送包含回溯的崩溃报告。
现在是我的问题和问题:
简单说一下:
。 它将生成到 stderr 的堆栈跟踪,但您可以轻松地执行不同的操作,例如使用 HTTP 等发布堆栈跟踪数据。
gdb
来对崩溃程序进行回溯。只需拦截像 SIGBUS 这样的信号,当收到信号时,您可以使用
backtrace()