gdb call 函数调用

news2025/1/18 20:17:50

        在 gdb 里可以用 call 命令来调用函数,跟代码里调用效果是一样的。在任一断点处都可以用 call 来调用函数,但不知是否需要debug 信息来支持,我这里实际操作的都是带debug信息的程序。首先打一个断点,如:

 当断点触发时,我们可以用 call function 来看一个这个函数的原型,如:

 

其实如果我们要用call 来调用函数,我们是应该先知道该函数原型的,且知道函数的作用的,同时了解哪人是入参,哪个是出参。所以我要调用这个函数时,因为有两个指针参数,我打断点的这个函数里也没有可以直接用的变量,所以用 call malloc 来申请内存变量,如:

申请的内存变量为 $12,具体申请的大小,根据结构体参数大小而定。因为入参需要有数据,所以这里就需要强制转换,并且赋值。而出参也是需要一个指针变量的,所以也申请了一个临时变量:

申请的出参变量的大小也是根据结构体变量来定,可以申请比期望的大,如 call malloc(128) ,其实我只需要 24 字节。申请成功后,直接调用,返回值为 0 表示函数执行成功了,同时出参 $13 里保存了想要的数据,然后就可以转换成结构体查看数据内容了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/926067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java之AbstractQueuedSynchronizer

要让你写一个java版的并发同步库,你会怎么思考设计???先思考三五分钟 请先拜读下老外的paperhttp://gee.cs.oswego.edu/dl/papers/aqs.pdf 1. 简介 AbstractQueuedSynchronizer,简称AQS,中文翻译为抽象队…

LeetCode--HOT100题(41)

目录 题目描述:102. 二叉树的层序遍历(中等)题目接口解题思路代码 PS: 题目描述:102. 二叉树的层序遍历(中等) 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地&am…

【C语言进阶(6)】字符串函数的使用方法 + 模拟实现

文章目录 Ⅰ 字符操作函数⒈字符分类函数⒉字符转换函数 Ⅱ 字符串操作函数⒈strlen⒉strcpy⒊strcat⒋strcmp⒌strncpy⒍strncat⒎strncmp⒏strstr⒐strtok⒑strerror Ⅲ 模拟实现字符串函数⒈模拟实现 strlen⒉模拟实现 strcpy⒊模拟实现 strcat⒋模拟实现 strcmp⒌模拟实现 …

ABB DI651电源模块

数字输入: DI651模块是用于读取数字输入信号的设备。它可以接收来自传感器、开关、按钮等外部设备的数字信号。 信号类型: 这种模块通常可以处理不同类型的数字信号,例如开关信号、脉冲信号、状态信号等。 通道数量: DI651模块可…

浪涌保护器的工作原理和应用

浪涌保护器是一种用于限制瞬态过电压和泄放浪涌电流的装置,主要用于保护低压电力系统和电子设备免受雷击或其他因素引起的电压冲击的损害。浪涌保护器的工作原理是利用其内部的非线性元件,在正常状态下呈现高阻抗,不影响电路的正常运行&#…

企业财务管理,重点指标分析

一、偿债能力指标 偿债能力指标是一个企业财务管理的重要管理指标,是指企业偿还到期债务(包括本息)的能力。偿债能力指标包括短期偿债能力指标和长期偿债能力指标,衡量短期偿债能力的指标主要有流动比率、速动比率和现金流动负债…

PlantUML文本绘制类图

记录下文本绘制类图的语法 参考 https://juejin.cn/post/6844903731293585421 类的UML表示 使用UML表示一个类,主要由三部分组成。类名、属性、方法。其中属性和方法的访问修饰符用 - 、# 、 表示 private、protected、public。 如图所示,表示A类有一个…

1007 Maximum Subsequence Sum

Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { Ni​, Ni1​, ..., Nj​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, g…

电商数据采集和分析

什么是电商数据采集? 数据采集一般是指利用人工或者爬虫技术,对电商平台上的公开数据进行抓取采集,采集完成后,去除客户不需要的无关的杂质数据,再进行交付。 电商数据采集要注意哪些点? 首先是采集平台&…

vue 简单实验 自定义组件 局部注册

1.概要 2.代码 <html> </html> <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <body><div id"counter"><component-a></component-a></div> </body&g…

【方案】安防监控EasyCVR智慧工地视频监管风险预警平台的应用

智慧工地方案是一种结合现代化技术与工地管理实践的创新型解决方案。它通过实时监控、数据分析、人工智能等技术手段&#xff0c;使工地管理更加高效、智能化。在建设智慧工地的过程中&#xff0c;除了上述提到的利用物联网技术实现设备互联、数据采集及分析以外&#xff0c;还…

快捷支付和网上支付、协议支付都有哪些区别?

协议支付是指客户通过与银行签订协议&#xff0c;将客户的银行账户连接到商户的相关账户&#xff0c;并在支付时直接输入相关账户的支付密码。通过与特定商户共同为客户提供的电子支付方式&#xff0c;客户在中国银行开立的银行账户与客户在特定商户的用户ID绑定&#xff0c;并…

华为“鸿鹄之志”:2025年L4,2030 年实现 L5,全场景AI指日可待

在第七届未来网络发展大会上&#xff0c;华为公司的彭松发表了题为《打造端到端 AI 网络&#xff0c;打通全场景 AI 能力》的主题演讲。他指出&#xff0c;AI 时代网络创新包括 Network for AI 和 AI for Network 两个方面的目标。 前者旨在构建支持AI业务的网络&#xff0c;实…

冠达管理:股票基本知识有哪些?建议新手了解!

股票教育是存在较大危险的&#xff0c;所以新手出资者在进行股票买卖之前主张先了解股票基本常识。那么股票基本常识有哪些&#xff1f;主张新手了解!下面就为大家剖析&#xff1a; 1、股票含义 股票是股份有限公司所有权的一部分&#xff0c;也是发行的所有权凭据&#xff0c…

HTTP协议初识·上篇

目录 认识URL urlencode和urldecode 如何编码解码和验证过程 一个基本的网络服务器的流程 代码验证请求与响应 准备工作 HTTPServer.hpp Protocol.hpp makefile 1请求 HTTPServer.hpp 1.0函数handlerHttp-基本流程 再次处理 HttpServer.cc(新建文件) 测试1 -- 请…

JS的事前循环Event Loop

前言 javascript是单线程脚本语言&#xff0c;并非指js只有一个线程&#xff0c;而是同一时刻只能有一个线程在工作。 js异步如何实现 如果 JS 中不存在异步&#xff0c;只能自上而下执行&#xff0c;如果上一行解析时间很长&#xff0c;那么下面的代码就会被阻塞。 对于用户…

【直接收藏】前端 VUE 高阶面试题(三)

86.说说vue生命周期&#xff0c;发送请求在生命周期的哪个阶段&#xff0c;为什么不可以是beforeMount&#xff0c;mounted中 回答&#xff1a; 1、vue的生命周期 1&#xff09;、生命周期是什么&#xff1f; Vue 实例有一个完整的生命周期&#xff0c;也就是从开始创建、初始…

C++信息学奥赛1148:连续出现的字符

代码题解&#xff1a; #include <iostream> #include <string> using namespace std; int main() {int n;// 输入一个整数ncin>>n;cin.ignore();string str1;// 输入一行字符串getline(cin,str1);for(int i0;i<str1.length();i){int a0;for(int ji;j<…

自定义拖拽功能,上下拖拽改变盒子高度

核心在于监听鼠标的move来改变div的高度&#xff0c;抽成了组件 <template><div ref"container" class"drag"><z-tooltip v-if"isShowIcon" effect"dark" content"格式化" placement"top-start"&…

Windows11 安装 nvm node版本管理工具

在 Windows 11 上安装并配置 NVM 与 Node.js 版本管理工具 引言&#xff1a; Node.js 是一款强大的开发工具&#xff0c;而版本管理工具 NVM 则可以帮助我们在不同的项目中灵活地切换和管理 Node.js 版本。本篇博客将为大家介绍如何在 Windows 11 操作系统上安装 NVM&#xff…