ceph vstart调试client端代码

来源:互联网 发布:四剑圣2.6优化版攻略 编辑:程序博客网 时间:2024/06/06 04:19

因为OSD端有OSD进程,MON有MON进程,MDS有MDS进程。所以在gdb的时候可以直接attach这些进程号进程调试。或者在代码中直接添加打印。但是对于client端的代码没有一个具体的进程来进行attach,因为client端代码是编译成一个lib库,client端程序在运行的时候会链接这些lib库,如librbd.lib librados.lib,因此需要找到一个这些lib库的载体。为了更好的调测这些数据代码,可以使用rbd bench-write工具进行调测,这也是可以直接通过vstart来操作的,这样方便调测和debug。具体通过一个例子来说明:
如我想看client端读写请求的路径流程:

如果想修改代码:此时你可以修改client端代码,然后 make -j64进行编译。
一、在ceph/build/目录下:
1、../src/vstart.sh -n -d –mon_num 1 –mds_num 0 –osd_num 3 –short
2、./bin/ceph osd pool create 15Kpool 32 32 -c ceph.conf
3、./bin/rbd create 15Kpool/image -s 10G -c ceph.conf
二、通过rbd bench-write工具对对这个image进行写操作:
1、./bin/rbd bench-write image –pool=15Kpool –io-size 4K –io-pattern rand -c ceph.conf

三、此时在out/client.admin.xxxx.log文件中回打印修改的打印语句。

四、或者可以通过cgdb的方式来附加这个bench-write进程。通过断点的方式进行debug。
1、ps aux |grep bench
root 1447 12.7 0.0 1635684 30672 pts/14 Sl+ 00:09 0:01 ./bin/rbd bench-write image –pool=15Kpool –io-size 4K –io-pattern rand -c ceph.conf
2、#cgdb -p 1447
3、(gdb):b ImageRequestWQ.cc:165
4、(gdb):c

原创粉丝点击