linux下如何利用gdb调试汇编代码
来源:互联网 发布:图片动态特效制作软件 编辑:程序博客网 时间:2024/06/07 03:24
1、gdb调试汇编代码
(1)、假设有如下代码,test.c
/*test.c*/void main(){ int a, int b, int c; a = 1; b = 2; add_mmx(a, b, c);}
注意:上述代码只是举例,add_mmx(a,b,c)是纯汇编写的。目的告诉gdb调试方法。
代码写完后,gcc编译成可执行文件
gcc -g -m32 test.c -o test注意,上述代码不能编过,不要拷贝上面的代码,旨在举例。
gdb调试
gdb ./test当然,你如果要给main函数传参,请通过 set args 命令
(2)、设置断点
b test.c:6注意:断点一定要打在 调用纯汇编代码的前一条语句
(3)、gdb下运行程序
r(4)运行到断点处,可以使用disassemble指令获取汇编代码
disassemble(5)使用display /i $pc 显示当前正要执行的汇编指令
display /i $pc(6) 单步步过
(gdb) ni (next instruction)(7) 单步步入
(gdb) si ( step instruction )
继续执行
( gdb )c
( gdb )c
执行到返回
(gdb) finish
(gdb) finish
(8)查看各寄存器的值
i r
参考网址:http://www.cnblogs.com/20145205y/p/6132211.html
参考网址:http://blog.csdn.net/mergerly/article/details/8538272
参考网址:http://blog.csdn.net/liuqiaoyu080512/article/details/8457528 内联汇编
参考地址:http://blog.csdn.net/cymycs/article/details/47313557
参考地址:http://blog.csdn.net/eastonwoo/article/details/8763216
参考地址:http://www.cnblogs.com/taek/archive/2012/02/05/2338877.html
参考网址:https://www.cs.cmu.edu/~fp/courses/15213-s07/misc/asm64-handout.pdf
参考网址:http://www.hoverlees.com/blog/?p=17
参考网址:http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
参考网址:http://eli.thegreenplace.net/2011/09/06/stack-frame-layout-on-x86-64/
http://aandds.com/blog/lang-assembly.html
https://zhidao.baidu.com/question/329522821.html
2、汇编常用跳转指令及检测的标志位
助记符
条件( 执行 CMP A,B 之后的标志位)
表达式
无符号数
JB/JNAE
CF=1
A < B
JAE/JNB
CF=0
A ≥ B
JA/JNBE
CF=0 and ZF=0
A > B
JBE/JNA
CF=1 or ZF=1
A ≤ B
有符号数
JL/JNGE
SF ≠ OF
A < B
JGE/JNL
SF=OF
A ≥ B
JG/JNLE
SF=OF and ZF=0
A > B
JLE/JNG
SF ≠ OF or ZF=1
A ≤ B
无符号数或有符号数
JZ/JE
ZF=1
A = B
阅读全文
0 0
- linux下如何利用gdb调试汇编代码
- LINUX下GDB反汇编和调试
- LINUX下GDB反汇编和调试
- Linux 下调试汇编代码
- 在linux下用gdb调试gcc编译的代码;以及反汇编的操作
- 在Linux下利用GDB调试程序
- Linux下GDB调试C++代码
- Linux下汇编调试器GDB的使用
- linux下预处理、编译、汇编、链接及gdb调试
- LINUX下GDB调试
- LINUX下GDB调试
- LINUX下GDB调试
- LINUX下GDB调试
- LINUX下GDB调试
- linux下gdb调试
- Linux下GDB调试
- LINUX下GDB调试
- LINUX下GDB调试
- Linuxnotes: bash shell1
- SLAM学习--非线性优化
- springboot 使用CGLib 方式实现AOP代理
- ActiveMQ 的安装与使用(单节点)
- 6.表格
- linux下如何利用gdb调试汇编代码
- Core 2.0 的dll实时更新、https、依赖包变更问题及解决
- cassandra 获取int型数据问题
- Spring Cloud之 Spring Cloud Config(一)
- 返回到前一个页面时显示前一个页面中ajax获取的数据
- linux查看/修改文件编码
- 集合(京东2017秋招真题)
- Help Jimmy
- 2017 Android github上优秀开源项目分类汇总