如何基于rdma-core通过gdb调试RMDA代码

本文指导如何在使用ibv_verbs编程时,通过GDB调试RDMA代码,特别提到需进入libibverbs库进行ibv_create_qp等API的内部调试。作者提供了从rdma-core库下载、编译和调试的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、写在前面

在编写RDMA代码时,同时是使用ibv_verbs进行编程,需要在.c文件顶部调用<infiniband/verbs.h>这个头文件,但是我们在调试时,如通过GDB进行调试时,无法进入函数内部进行调试,如ibv_create_qp这个API,我们无法进入其内部。这是因为我们应该进入libibverbs内部进行调试,而不是<infiniband.verbs.h>中,下面是具体的调试方式。

二、具体调试方式

  1. 从github上下载rdma-core用户态代码库:https://github.com/linux-rdma/rdma-core
  2. 解压并进入文件夹
  3. 执行./build.sh指令
  4. 将自己编写的rdma程序(下文中表述为client.c)放入rdma-core/build/lib目录内
  5. 编译:gcc client.c -o client -g -L. -Wl,-rpath=./ -libverbs
  6. 开始调试:gdb clent
  7. 设置代码参数(这个看自己的代码是怎么写的):set args 192.68.79.134 -d rxe_0 -i 1 -g 1
  8. 设置源码目录:dir …/…/libibverbs
  9. 在对应代码处添加断点:假设ibv_create_qp代码在第50行,则运行指令 b 50
  10. 运行至该代码处:r
  11. 进入函数内部进行调试:s
  12. 之后你就会发现你已经进入了rdma-core库中了,可以看到用户态的代码的实现方式了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值