用xcode来debug以makefile组织的程序

来源:互联网 发布:卖家开通淘宝客的条件 编辑:程序博客网 时间:2024/06/14 02:05

用xcode来debug以makefile组织的程序 

标签: xcodemakefileexternaldebug
 1328人阅读 评论(0) 收藏 举报
 分类:

由于在网上下的开源代码很多都是用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那样调试。

0 0
原创粉丝点击