社区
C++ 语言
帖子详情
gdb是如何判定finish指令如何执行到"函数末尾"的?
zdferex
2016-10-09 05:53:29
是否是去检查有没有类似于leave这样的指令,或者mov %rbp, %rsp,pop %rbp这样的指令?
它怎么决定执行到哪一个字节的指令位置,就是finish了某个函数调用?
但是,光检查leave/mov ebp这样的指令恐怕还不行,因为函数调用之后,通常还会有一些寄存器需要pop回去。
而到底哪些寄存器需要被push和pop,是在编译阶段决定的,二进制文件里面已经没有这类信息了吧,gdb如何能判断哪里结束呢?
...全文
236
2
打赏
收藏
gdb是如何判定finish指令如何执行到"函数末尾"的?
是否是去检查有没有类似于leave这样的指令,或者mov %rbp, %rsp,pop %rbp这样的指令? 它怎么决定执行到哪一个字节的指令位置,就是finish了某个函数调用? 但是,光检查leave/mov ebp这样的指令恐怕还不行,因为函数调用之后,通常还会有一些寄存器需要pop回去。 而到底哪些寄存器需要被push和pop,是在编译阶段决定的,二进制文件里面已经没有这类信息了吧,gdb如何能判断哪里结束呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2016-10-10
打赏
举报
回复
谁通过sp或esp或rsp读栈中的函数返回地址,谁就企图返回当前函数。
mLee79
2016-10-09
打赏
举报
回复
到ret啊, 很多函数都会省略栈帧, 没有 leave/pop bp 指令...
GDB
显示别的文件;在别文件打断点;
执行
到
函数
末尾
;跳出当前
函数
显示别的文件:l "文件名.后缀名":行号 在别文件打断点:b "文件名....
执行
到
函数
末尾
:f
ini
sh
跳出当前
函数
(当前位置到
函数
的
末尾
不被
执行
):return 转载于:https://www.cnblogs.com/xiao
sh
iwang/p/10240094.html...
GDB
执行
完当前
函数
并返回
进入一个
函数
执行
后 1.如果想要立即中断当前
函数
运行并返回,用return,当前
函数
的剩余语句将 不被
执行
。...2.如果想让程序
执行
到当前
函数
返回之后停止,用f
ini
sh
,当前
函数
的剩余语句将 会正常运行。
GDB
基本命令
编译时一般需要加 -g选项,eg. g++ -g test.cpp -o test 用
gdb
启动某个程序:
gdb
test ...next(n) 单步
执行
,不进入
函数
内部 step(s) 单步
执行
,会进入
函数
内部 until 退出循环体 until 行号...
快速上手
gdb
GDB
常用调试技巧 文章
末尾
有总结的命令
GDB
常用调试
指令
编译程序时需要加上-g,之后才能用
gdb
进行调试:gcc -g main.c -o main 常用命令 回车键:重复上一命令 (
gdb
)help:查看命令帮助,具体命令查询在
gdb
...(
gdb
)start:单步
执行
,运行程序,停在第一
执行
语句 ...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章