作为一个VIMer,看到了一些基于VS或者Eclipse搭建的xgboost源码调试环境(其实并不多)。为了调试xgboost再去安装一个VS,似乎没有必要(主要是因为我的mac只剩下3G存储空间)。下面就是自己探索后的详细步骤。

第一步:

在Github中下载xgboost的源代码。

第二步:

修改根目录下的Makefile文件。找到Makefile文件中的这行代码:

export CFLAGS=  -std=c++0x -Wall -Wno-unknown-pragmas -Iinclude $(ADD_CFLAGS) $(PLUGIN_CFLAGS)

添加参数‘-g’:

export CFLAGS=  -std=c++0x -g -Wall -Wno-unknown-pragmas -Iinclude $(ADD_CFLAGS) $(PLUGIN_CFLAGS)

这个步骤的目的是编译时得到可调式版本,默认安装的时候,没有该参数(如果喜欢汇编语言,此步可以略过)。

第三步:

运行根目录下脚本文件进行安装。

./build.sh

第四步:

在该步中,给出一个调试案例。进入demo目录中的binary_classification例子中,调试一个二分类的例子。

首先要修改mushroom.conf中的训练集和测试集的文件路径。这个是由于repo文档更新不及时所致。

开始调试:

lldb ../../xgboost mushroom.conf max_depth=9

main函数入口处打断点:

b main

运行:

r

进入函数:

s

下一步:

n

接下来就可以一步步进行跟踪代码逻辑了。