用xcode来debug以makefile组织的程序

由于在网上下的开源代码很多都是用makefile来组织的,本来没打算用xcode来debug而直接在命令行下用gdb,但是mac下的gdb貌似有点奇怪,首先mac下本身没装gdb,在网上查了一下,使用brew安装了GNU 7.7版本,令人别扭的事使用gdb居然还要sudo(这一步可以通过生成一个certification来解决,详见http://ntraft.com/installing-gdb-on-os-x-mavericks/),此时不详的预感用上心头。按道理这么重要的开源mac应该支持的很好才对,果然,我很快发现gdb的step有些问题:

比如这一句:

train.load(cmdline.getValue(param_train_file));

按s 应该跳转到getValue(Ubuntu测试),但是在mac下则直接跳转到load,此刻我心中的不爽油然而生。本着本人偏执的特点和搞清楚问题本质的决心,我决定死磕这个问题,结果两天过去了,发现貌似就是os的原因,网上有些人也和我一样,但就是没有解决方案,对这种蛮不讲理的现象,我果断服软,apple大爷,您赢了。


我实在不想用另外一台笔记本在ubuntu下debug,后来我想,这么重要的功能苹果不可能没有解决方案,于是我转向xcode,看看xcode能不能把makefile组织的程序跑起来。我在google搜索debugging external makefile projects,找到了一些有用的资料,主要是这哥们的 http://hiltmon.com/blog/2013/07/05/xcode-and-the-simple-c-plus-plus-project-structure/,

1.首先打开xcode, file->new->project, 选择external build system,next, 键入product name(假设为fm),选择好路径,create。


2.然后将文件添加到fm里

 


3.配置 external build tool configuration里面的 Arguments 和 directory。其中arguments是make后的argument,比如在命令行里应该输入make all ,那么在arguments里面就只输入all就行了。directory则是指向makefile的directory。配置好后用command+b来build。这里注意这个例子里的make all 已经是带了调试信息的makefile

也就是加了makefile里已经写入了-g。(这里有个刷新问题,可以手动切换下project和targets,也就是来回点几下project的fm和targets的fm)



4.指定执行文件

在executable选项里把刚才build好的执行文件选上。



5.文件设好断点,run。


至此调试成功!xcode用的是lldb而并非gdb,经过验证step等方面均正常。其实也可以先make,然后在命令行里输入lldb像gdb那样调试。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值