码迷,mamicode.com
首页 > 数据库 > 详细

20145311利用gdb调试汇编代码

时间:2016-12-01 02:58:12      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:image   com   ges   inf   style   void   复习   jpg   技术分享   

利用GDB调试汇编代码

首先编写c语言原代码,我使用的是同学分析过的代码

#include<stdio.h>
short addend1 = 1;
static int addend2 = 2;
const static long addend3 = 3;

static int g(int x)
{
    return x + addend1;
}  

static const int f(int x)
{
    return g(x + addend2);
}

int main(void)
{
    return f(8) + addend3;
}

接下来就是生成汇编代码,进行调试生成

源代码是gdb.c 生成的.o文件为5311

技术分享

接下来可以进行gdb调试了

在main函数那个地方设置一个断点,接着run运行

技术分享

使用disassemble指令可以获取汇编代码,用i(info) r(registers)指令可以查看各寄存器的值:

技术分享

利用display /i $pc,这样在每次执行下一条汇编语句时,都会显示出当前执行的语句

技术分享

接下来进行单步执行查看各个寄存器的值

技术分享

技术分享

技术分享

继续执行,查看各个寄存器的值,结合书上的知识对各个步骤的指令对寄存器的值造成的影响进行分析

感悟

其实还是没能完全掌握利用gdb对汇编代码进行调试,这与c代码的调试还是有很多不同

另外,由于汇编代码是比较接近于机器的语言,所以理解起来还是要费点力气,不像高级语言理解起来容易

结合了一下同学些的gdb调试汇编代码的例子,有很多还是没能看懂

简单地复习了一下汇编中各种指令,以及参数的传递、指令的跳转,感觉有些繁琐,首先还是要掌握好基础知识,这样在理解一个长串的汇编代码时就会轻松一些。

20145311利用gdb调试汇编代码

标签:image   com   ges   inf   style   void   复习   jpg   技术分享   

原文地址:http://www.cnblogs.com/1152wyx/p/6120018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!