标识用于构建可执行文件的源信息,readelf与nm

时间:2018-07-14 14:41:18

标签: dwarf nm readelf

试图弄清楚如何解释(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");
}

0 个答案:

没有答案