linux命令返回函数名

worktile 其他 73

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux系统中,可以使用一些命令来返回函数的名称。下面是一些常用的命令:

    1. nm命令:可以显示目标文件或者共享库中的符号列表,包括函数名。具体使用方式如下:
    `nm <文件名> | grep ‘ T ‘`

    例如,如果要显示目标文件或共享库中的函数名,可以使用以下命令:
    `nm libfoo.so | grep ‘ T ‘`

    这会列出所有以’T’开头的行,这些行表示函数符号。

    2. objdump命令:也可以用来返回函数的名称。具体使用方式如下:
    `objdump -t <文件名> | grep ‘ F ‘`

    例如,如果要显示目标文件或共享库中的函数名,可以使用以下命令:
    `objdump -t libfoo.so | grep ‘ F ‘`

    这会列出所有以’F’开头的行,这些行表示函数符号。

    这些命令可以帮助你快速找到Linux系统中的函数名称。希望对你有帮助!

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux中,要返回函数名,可以使用以下几种方法:

    1. 使用backtrace()函数配合dladdr()函数: backtrace()函数可以获取当前函数调用栈的信息,包括函数名和函数地址等。而dladdr()函数可以根据函数地址,获取函数名信息。使用这两个函数的组合,可以返回函数名。

    “`c
    #include
    #include
    #include
    #include

    void printBacktrace()
    {
    void *array[10];
    size_t size;

    size = backtrace(array, 10);

    // 获取函数名信息
    char **strings;
    strings = backtrace_symbols(array, size);

    for (size_t i = 0; i < size; i++) { Dl_info info; if (dladdr(array[i], &info) && info.dli_sname) { printf("%s\n", info.dli_sname); } else { printf("%s\n", strings[i]); } } free(strings);}void foo(){ printBacktrace();}int main(){ foo(); return 0;}```2. 使用nm命令和grep命令: nm命令可以从二进制文件中提取符号表信息。而grep命令可以过滤出包含特定函数名的行。使用这两个命令的组合,可以返回函数名。```bashnm binary_file | grep ' T ' | awk '{print $3}'```其中,binary_file是二进制文件的路径,' T '用来过滤出函数符号,$3表示输出第三列,即函数名。3. 使用objdump命令: objdump命令可以查看二进制文件的反汇编信息,包括函数名和函数地址等。通过解析objdump的输出,可以返回函数名。```bashobjdump -t binary_file | grep 'F .text' | awk '{print $6}'```其中,binary_file是二进制文件的路径,'F .text'用来过滤出函数符号,$6表示输出第六列,即函数名。4. 使用readelf命令: readelf命令可以查看ELF格式的文件的信息,包括符号表信息。通过解析readelf的输出,可以返回函数名。```bashreadelf -s binary_file | grep 'FUNC' | awk '{print $8}'```其中,binary_file是二进制文件的路径,'FUNC'用来过滤出函数符号,$8表示输出第八列,即函数名。5. 在编译时加上-fverbose-asm选项: 使用-fverbose-asm选项可以在编译时生成详细的汇编代码,包括函数名等信息。通过查看生成的汇编代码,可以返回函数名。```bashgcc -S -fverbose-asm source_file.c -o output_file.s```其中,source_file.c是源文件的路径,output_file.s是输出的汇编文件路径。通过查看output_file.s,可以找到函数名。这些是在Linux中返回函数名的一些常用方法,具体选择哪种方法取决于具体的需求和场景。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux中,可以使用一些命令来获取函数名。下面介绍几种常用的方法。

    1. 使用objdump命令
    objdump命令是一个用于检查二进制文件内容的工具,可以用来查看目标文件、可执行文件和共享库的信息。可以使用以下命令来获取函数名:

    “`
    objdump -t 文件名 | grep ‘函数名’
    “`

    这个命令会列出文件中所有的符号表信息,并使用grep过滤出包含指定函数名的行。

    2. 使用nm命令
    nm命令也是用于查看目标文件、可执行文件和共享库的符号表信息的工具。可以使用以下命令来获取函数名:

    “`
    nm 文件名 | grep ‘ T ‘ | awk ‘{print $3}’
    “`

    这个命令会列出文件中所有的符号表信息,并使用grep过滤出函数名所在的行,并使用awk提取出函数名。

    3. 使用readelf命令
    readelf命令提供了一种查看ELF(Executable Linkable Format,可执行连接器格式)文件结构的方法,ELF是一种用于可执行文件和目标文件的标准文件格式。可以使用以下命令来获取函数名:

    “`
    readelf -s 文件名 | grep ‘函数名’
    “`

    这个命令会列出文件中所有的符号表信息,并使用grep过滤出包含指定函数名的行。

    这些命令可以根据需要选择其中的任意一种来获取函数名。请注意,其中的“文件名”应替换为要查看的具体文件名。另外,这些命令还可以与其他选项和参数一起使用,以获取更详细的信息。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部