GDB之源码与汇编映射对应关系(十五)

编程入门 行业动态 更新时间:2024-10-09 11:20:24

GDB之<a href=https://www.elefans.com/category/jswz/34/1770099.html style=源码与汇编映射对应关系(十五)"/>

GDB之源码与汇编映射对应关系(十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

1.前言

本篇目的:GDB之源码与汇编映射对应,查阅方便。

2.调试实例

<1>. test.cpp源码

1 #include <cstdio>
2 
3 void test(){
4   printf("1111111111111111\n");
5 }
6 
7 int main(void) {
8   test();
9   return 0;
10 }

<2>.汇编代码与源码映射调试过程:test函数源码与汇编代码映射。

(gdb) disa
disable      disassemble  
(gdb) disassemble /m test
Dump of assembler code for function _Z4testv:
3	void test(){0x0000000000001149 <+0>:	endbr64 0x000000000000114d <+4>:	push   %rbp0x000000000000114e <+5>:	mov    %rsp,%rbp4	  printf("1111111111111111\n");0x0000000000001151 <+8>:	lea    0xeac(%rip),%rax        # 0x20040x0000000000001158 <+15>:	mov    %rax,%rdi0x000000000000115b <+18>:	call   0x1050 <puts@plt>5	}0x0000000000001160 <+23>:	nop0x0000000000001161 <+24>:	pop    %rbp0x0000000000001162 <+25>:	ret    End of assembler dump.
(gdb)

<3>.查看某一行所对应的地址范围,比如第4行。

 (gdb) i line 4
Line 4 of "test.cpp" starts at address 0x1151 <_Z4testv+8> and ends at 0x1160 <_Z4testv+23>

以上是 printf(“1111111111111111\n”);代码寻址语句:它的寻址范围: 0x1151 —> 0x1160。

<4>.查看 printf(“1111111111111111\n”)语句(寻址范围 0x1151 —> 0x1160)对应的汇编代码,使用disassemble Start,End命令

(gdb) disassemble 0x1151,0x1160
Dump of assembler code from 0x1151 to 0x1160:0x0000000000001151 <_Z4testv+8>:	lea    0xeac(%rip),%rax        # 0x20040x0000000000001158 <_Z4testv+15>:	mov    %rax,%rdi0x000000000000115b <_Z4testv+18>:	call   0x1050 <puts@plt>
End of assembler dump.
(gdb)

更多推荐

GDB之源码与汇编映射对应关系(十五)

本文发布于:2024-03-14 09:32:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736179.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   关系   GDB   十五

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!