gdb call 函数调用

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

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

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

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

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

相关推荐
意法半导体STM322 天前
基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
人工智能·git·stm32·ai·gdb·stm32n6·stedgeai
Zenexus1 个月前
VSCODE+GDB+QEMU调试内核
linux·vscode·qemu·gdb
鹅毛在路上了2 个月前
CMake-gdb调试,解决LLVM ERROR: out of memory
c++·gdb·llvm
2401_858286112 个月前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
漫步企鹅5 个月前
【GDB】调试程序的基本命令和用法(Qt程序为例)
开发语言·qt·gdb·调试
Golinie7 个月前
【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试
linux·c++·gdb·fork·webserver·高并发服务器
利刃大大7 个月前
【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序
linux·c语言·vim·makefile·gdb·gcc
努力的CV战士8 个月前
C语言gdb调试
c语言·开发语言·gdb
每天敲200行代码8 个月前
Linux开发工具--vim编辑器-gcc/g++编译器-gdb调试器
linux·c++·编辑器·vim·gdb
HIT_Weston8 个月前
19、【OS】【Nuttx】【Python】gdb调试优化,python实现构建脚本
python·gdb·os·nuttx