免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1798 | 回复: 2

[Linux] 使用gdb如何单步c程序对应的汇编指令? [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 10:16:532015元宵节徽章
日期:2015-03-06 15:53:22
发表于 2016-09-21 18:50 |显示全部楼层
本帖最后由 cdsfiui 于 2016-09-21 18:52 编辑

例如,简单的加法运算

  1. void main(){
  2.    int i=0;
  3.    int j=i+1;
  4.    j+=2;
  5. }
复制代码

我用gcc -g myadd.c生成一个a.out然后
gdb a.out

b 2设置断点到int j=1+1;
这时我可以用disassemble命令看到反汇编语句。但是我想单步进入反汇编语句,应该怎么办呢? 我发现直接n的话,跳到c程序的下一行,而不会进入反汇编。

还请指点!

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
发表于 2016-09-21 21:05 |显示全部楼层
回复 1# cdsfiui

help si

论坛徽章:
0
发表于 2016-09-22 10:09 |显示全部楼层
回复 1# cdsfiui

一般来说,step跟踪时,都是针对C/C++高级语言代码行的,而且每行代码对应的assembly都会同步显示,个人觉得这已经挺好了。通常来说,一行高级语言代码就对应几行assembly,有时甚至是1:1的关系,两种语言对照着看,一目了然。。。。。。
哥个人很少用gdb,需要分析assembly一级的bug时,gcc -S生成disassembly,然后看静态代码就够用了

评分

参与人数 1信誉积分 +10 收起 理由
cdsfiui + 10 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP