试图弄清楚如何解释(objdump -WC
| readelf -wi
输出,以标识用于构建可执行文件的源代码和函数信息,基本上与nm -lA
相同。
我无法在项目中使用 nm ,因为它太慢了,因此我选择 readlef 和 objdump 。 (告诉我,如果还有另一个)
我能够使用 DWARF 输出而不是符号类型信息(即T或t)来识别源,功能和行号。
我需要识别T | t符号(符号位于文本(代码)部分。
NM输出示例:
a.out:00000000004012a8 T myfunc /home/projects/codematrix/work/myfunc.cc:3
有没有办法在用户创建的函数与非用户创建的函数的本地代码/函数的DWARF输出中标识符号类型,以便我可以过滤掉不是由开发人员创建的函数?
#include <stdio.h>
#include <string.h>
#include <map>
#include <string>
using namespace std;
void *myfunc();
void *mylib();
main() {
char *a ="Hello";
char *b ="Alan";
char *p;
map<string, string> SSmap;
printf("hello\n");
myfunc();
p = (char *)strstr(a, b);
mylib();
}
#include <stdio.h>
void myfunc() {
printf("myFunc\n");
printf("myFunc\n");
printf("myFunc\n");
}
#include <stdio.h>
void mylib() {
printf("mylib\n");
printf("mylib\n");
printf("mylib\n");
}