linux gdb调试汇编,汇编 – 使用gdb调试反汇编库

本文探讨了在Linux和MacOSX环境下使用GDB调试器时遇到的问题,特别是在不需要调试信息的情况下跟踪应用程序进入动态库的情况.文章详细描述了一个具体的案例,即在跟踪puts()函数时,GDB在遇到特定汇编指令时失去位置信息.此外,还讨论了解决此类问题的一般方法.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux和Mac OS X中,我可以使用stepi和nexti调试应用程序,而无需调试信息.

在Mac OS X上,gdb显示了在库中调用的函数,尽管有时在每个stepi指令中提前执行几个汇编器指令.

在Linux上,当我进入一个动态库gdb失去了.例如,puts()在puts()中有三个汇编指令,一旦gdb到达0x080482bf的跳转,就会失败,并显示“No function contains program counter for selected frame”.

0x080482ba in puts@plt ()

(gdb) disassemble

Dump of assembler code for function puts@plt:

0x080482b4 : jmp *0x8049580

0x080482ba : push $0x10

0x080482bf : jmp 0x8048284 <_init>

End of assembler dump.

(gdb) stepi

0x080482bf in puts@plt ()

(gdb) stepi

0x08048284 in ?? ()

(gdb) disassemble

No function contains program counter for selected frame.

你知道如何使用gdb调试这些库调用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值