我们的应用程序生成堆栈跟踪,其中某些地址未解析为符号。
目前无法更改产生堆栈跟踪的代码。
特别是没有链接到应用程序的静态库中的符号。这个静态库是用
gcc -g1 -O0
构建的。我也试过-g3
,但它产生了大得令人无法接受的静态库,而且无论如何都不起作用。我们的应用程序使用 C 和 C++,并使用 clang 构建。
对于那个库的地址,我可以用
addr2line -e <app-name>
获取源文件名和行号(如何获取符号名?)。
我还看到图书馆里的符号(它们都是非外部的,我们需要这样)
nm --defined-only <app-name>
.
一旦应用程序崩溃并且有可用的堆栈跟踪,我希望使用来自可执行文件 (app) 的信息“符号化”这些堆栈跟踪。我该怎么做?