linux gdb添加符号表,gdb – 什么是符号表,它如何集成到可执行文件中?

gdb使用两组符号.

-g集合是调试符号,它使事情变得更容易,因为它们允许您在调试时查看代码并查看变量.

编译时默认包含另一组符号.这些是链接符号,并且存在于ELF(可执行链接格式)符号表中.这包含比调试符号少得多的信息,但包含最重要的东西,例如可执行文件(或库或对象文件)中的东西的地址.没有这个信息,gdb甚至不知道main在哪里,所以(gdb)break main会失败.

如果您没有调试符号(-g),那么您仍然可以(gdb)断开主,但是gdb将不会有任何源文件中的代码行的概念.当您尝试逐步完成代码时,您一次只能提前执行1个机器指令,而不是一次提前一行.

strip命令通常用于从可执行文件(或其他对象文件)中删除符号.

如果您不希望某人能够看到符号,或者如果要节省文件中的空间,则通常会使用它.符号表可以变大. Strip去除了调试符号和链接器符号,但它有几个命令行开关,可以限制它删除的内容.

如果您在程序上运行file命令,它将告诉你的一件事是天气或不可执行文件已被剥离.

$gcc my_prog.c -o my_prog

$file my_prog

my_prog: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

$strip my_prog

my_prog: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值