相关疑难解决方法(0)

什么是__gmon_start__符号?

我正在用gcc hello.c -o hello -O3编译这段代码

#include <stdio.h>

int main(void) {
    printf("Hello world\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我列出我得到的重新安置时:

test@southpark$ readelf -r hello | grep gmon
080495a4  00000106 R_386_GLOB_DAT    00000000   __gmon_start__
080495b4  00000107 R_386_JUMP_SLOT   00000000   __gmon_start__
Run Code Online (Sandbox Code Playgroud)

当我列出这个文件中的符号时,我得到:

test@southpark$ readelf -s hello | grep gmon
     1: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
    48: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
Run Code Online (Sandbox Code Playgroud)

gmon_start与gprof有什么共同点吗?即使我没有使用-pg或-g编译/链接,为什么还要对该符号进行重定位?哪个库可以解析这个符号?

c linux gcc elf binutils

20
推荐指数
1
解决办法
1万
查看次数

什么是符号表以及它如何集成到可执行文件中?

当我尝试调试可执行文件时:

(gdb) break +1
No symbol table is loaded.  Use the "file" command.
Run Code Online (Sandbox Code Playgroud)

这究竟是什么意思?

符号表是否附加到可执行文件?

gdb symbol-tables executable-format

16
推荐指数
2
解决办法
3万
查看次数

标签 统计

binutils ×1

c ×1

elf ×1

executable-format ×1

gcc ×1

gdb ×1

linux ×1

symbol-tables ×1