首页 > 其他分享 >gdb简单使用

gdb简单使用

时间:2023-06-30 18:11:25浏览次数:45  
标签:layout 简单 使用 函数调用 gdb 寄存器 断点 hello

gdb常见指令

1.编译

假设文件名为hello.c

gcc -ggdb3 -Wall -o hello hello.c
  • 调试,需要在编译时加上选项-ggdb3选项
  • -Wall: 可以提示错误信息

2.进入gdb

gdb hello

3. 打断点,以源码内行号为单位

打断点:
	break 21   在第21行设置断点
	break main 在main函数处设置断点
	break test 在函数test处设置断点
代码单步执行:
	next: 跳过函数调用
	step: 跳入函数调用
汇编指令单步执行:
	si:   汇编指令级别step
	ni:   汇编指令级别next
查看寄存器:
	layout regs
	info regs
查看栈信息
	x/10x $sp :打印stack前10个元素
打印寄存器信息
	display $register name
	display $rip
程序栈参数:
	layout args
	info registers
程序栈信息:
	info frame
查看汇编:
	layout asm
	disassemble

常用寄存器

  • %rax:通常存储函数调用的返回结果,也被用在idiv (除法)和imul(乘法)命令中。
  • %rsp:指向栈顶位置。pop操作通过增大rsp的值实现出栈,push操作通过减小rsp的值实现入栈。
  • %rbp:栈帧指针,标识当前栈帧的起始位置。
  • %rdi, %rsi, %rdx, %rcx,%r8, %r9:六个寄存器用于存放函数调用时的参数,当参数少于7个时, 参数放入寄存器;7个以上时,放入栈中
  • %eax:要返回的值必须存储在%eax中(规定)

标签:layout,简单,使用,函数调用,gdb,寄存器,断点,hello
From: https://www.cnblogs.com/INnoVationv2/p/17517531.html

相关文章

  • k8s使用docker无法加载镜像Error response from daem
    1、报错信息:无法使用docker下载k8s镜像的解决办法,参考https://www.jianshu.com/p/70efa1b853f5目前国内的各大云计算厂商都提供了kubernetes的镜像服务,比如阿里云,我可以通过dockerpullregistry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24  修改为:[root@master~]......
  • O2OA(翱途)开发平台如何在流程表单中使用基于Vue的ElementUI组件?
    本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改操作。在流程表单设计界面,可以在左边的工具栏找到ElementUI组件。 将对应的组件拖动到表单设计......
  • spingBoot简单提供接口的方法----Get篇
    一、controller层写路由地址和service接口方法/***查询数量路由地址aaa/bbb/ccc/getDone*/@PreAuthorize("@ss.hasPermi('aaa:bbb:ccc:list')")@GetMapping("/getDone")publicActionResultgetDone(MeterPaginationmeterPagination){List<HashMa......
  • mysql 如何 使用一个字符串来进行排序
    如果想进行对一个字段进行排序,但是这个字段却不是int类型,适应varchar类型怎么办呢?常用的方式:给字符字段加上0,举例:1:假设scoreRate是一个varchar类型,并且值是一个百分(90%)的数据格式.要求:请获取scoreRate值最高的一条数据:sql:select*fromresultTableorderbyreplace(sco......
  • SpringBoot elasticsearch 简单使用
    ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行封装,提供了RESTAPI的操作接口。ElasticSearch作为一个高度可拓展的开源全文搜索和分析引擎,可用于快速地对大数据进行存储,搜索和分析。ElasticSearch主要特点:分布式、高可用、异步写入、多API、面向文档。Elastic......
  • 项目的初始化和服务器的简单搭建
    ##项目初始化新建文件夹,命名为`students-system`(根据自己的情况命名),注意这里的命名不得为中文或其他特殊字符```shellnpminit-y(初始化命令)```##安装包```shellnpmijqueryexpressexpress-art-template(安装命令)```##新建文件夹新建public,views文件夹,public下新建img,js......
  • python 队列简单实现
    1classQueuryExcept(Exception):...23classLinkNode:4def__init__(self,value:int,next=None):5self.value:int=value6self.next:LinkNode=next78def__repr__(self)->str:9li=[se......
  • 网络——mininet使用
    简介:Mininet是由一些虚拟的终端节点、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包......
  • Java 网络爬虫,就是这么的简单
    是Java网络爬虫系列文章的第一篇,如果你还不知道Java网络爬虫系列文章,请参看学Java网络爬虫,需要哪些基础知识。第一篇是关于Java网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻的新闻标题和详情页为例,需要提取的内容如下图所示: 我们需要提取图中圈出来的文字及其对......
  • tmux使用指令
    nohuppythonmain.py&进入后台的终端tmuxattach-tyhl查看所有的tmuxls新开终端tmuxnew-syhl一个终端分上下2个,进入下面的终端ctrl+b,箭头下离开当前终端,后台运行tmaxdetach或者按键ctrl+bd关闭终端tmuxkill-session-t或者ctrl+d分屏左......