gdb call 函数调用

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

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

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

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

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

相关推荐
XiaoCCCcCCccCcccC1 天前
Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb
linux·c语言·gdb
shimly12345614 天前
(done) gdb 在系统编程中的调试技巧
gdb
yunteng52119 天前
VisualStudio远程编译调试linux_c++程序(二)
linux·c++·ssh·gdb·visual studio·remote
CYRUS STUDIO20 天前
详解ARM64可执行程序的生成过程
android·c语言·汇编·c++·gdb·arm64
云中双月21 天前
如何使用Ida Pro和Core Dump文件定位崩溃位置(Linux下无调试符号的进程专享)
linux·嵌入式·gdb·调试·gcc·崩溃·ida pro·ulimit·core dump·cross compile
zkk95271 个月前
C++调试方法(Vscode)(一) ——本地调试
开发语言·c++·vscode·gdb·调试
zkk95271 个月前
C++调试方法(Vscode)(二) ——本地调试(ROS版)
开发语言·c++·vscode·gdb·调试
Jouzzy2 个月前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
捕鲸叉2 个月前
GDB快捷键问答之01 源代码操作
gdb
Betty’s Sweet3 个月前
[Linux]:环境开发工具
linux·git·vim·makefile·gdb·gcc·g++