获取给定堆栈跟踪的函数名称

问题描述 投票:0回答:0

我们的应用程序生成堆栈跟踪,其中某些地址未解析为符号。

目前无法更改产生堆栈跟踪的代码。

特别是没有链接到应用程序的静态库中的符号。这个静态库是用

gcc -g1 -O0
构建的。我也试过
-g3
,但它产生了大得令人无法接受的静态库,而且无论如何都不起作用。我们的应用程序使用 C 和 C++,并使用 clang 构建。

对于那个库的地址,我可以用

addr2line -e <app-name>
获取源文件名和行号(如何获取符号名?)。

我还看到图书馆里的符号(它们都是非外部的,我们需要这样)

nm --defined-only <app-name>
.

一旦应用程序崩溃并且有可用的堆栈跟踪,我希望使用来自可执行文件 (app) 的信息“符号化”这些堆栈跟踪。我该怎么做?

linux debugging gcc stack-trace
© www.soinside.com 2019 - 2024. All rights reserved.