VS的vcxproj文件 + 调试技巧之调用堆栈 + 每次重新编译

使用BabeLua在cocos2d-x中调试Lua[转]----- http://blog.sina.com.cn/s/blog_4393ea3b0101jcg2.html
如何(在Toriosesvn上绑定比对)用Bcompare工具比较文件夹的差异
----------------------------------------------------
调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。

今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。

首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,function3,funtion4,且function1调用function2,function2调用function3,function3调用function4。在function4运行过程中,我们可以从线程当前堆栈中了解到调用他的那几个函数分别是谁。把函数的顺序关系看,function4、function3、function2、function1呈现出一种“堆栈”的特征,最后被调用的函数出现在最上方。因此称呼这种关系为调用堆栈(call stack)。

当故障发生时,如果程序被中断,我们基本上只可以看到最后出错的函数。利用call stack,我们可以知道当出错函数被谁调用的时候出错。这样一层层的看上去,有时可以猜测出错误的原因。常见的这种中断时ASSERT宏导致的中断。

在程序被中断时,debug工具条的右侧倒数第二个按钮一般是call stack按钮,这个按钮被按下后,你就可以看到当前的调用堆栈。

实例一:介绍
我们首先演示一下调用堆栈。首先我们创建一个名为Debug的对话框工程。工程创建好以后,双击OK按钮创建消息映射函数,并添加如下代码:
-----------------------------------------------------
 
[ 摘要]    详细了解vcxproj.filters文件后,你可以在你的解决方案管理器中按照你自己的分类习惯对文件进行分类。每种类别都以文件夹的形式存放,当然只是在解决方案管理器中显示而已。虽然可以在VS中直接操作,但是了解内部实现机制有时候会给我们直接操作带来很多好处,比如批量操作。

    详细了解vcxproj.filters文件后,你可以在你的解决方案管理器中按照你自己的分类习惯对文件进行分类。每种类别都以文件夹的形式存放,当然只是在解决方案管理器中显示而已。虽然可以在VS中直接操作,但是了解内部实现机制有时候会给我们直接操作带来很多好处,比如批量操作。
    首先,给大家看看分类修改后的截图。如下图:

   

     vcxproj.filters后缀的文件是工程中的文件过滤器配置文件。VS通过这个文件中的配置,可以在解决方案中按照设置好的过滤方案,进行分类。这个就像资源视图中一样,可以分门别类的将这些资源归类,方便查找。vcxproj.filters所要实现的功能,就是在解决方案管理器中,实现文件的分类显示。效果如上图。
    下面介绍这个文件以及如何修改这个文件实现这个效果。
     这个文件的修改,并不会修改原来文件的存放方式,这里只是过滤分类显示而已。当然,这个也不是只是好玩,在实际的开发中也是可以提高开发效率的。比如说,在处理界面的时候或者打包资源的时候,通常有各种资源,需要分类。而通常的默认的做法就是在资源视图中查看。不过,这个是对资源的查看方式,对于直接查看文件还是不方便。而解决方案中,不支持的类型则全部显示在工程(项目)节点的根下面。各个文件的堆积,给查看带来不便。要实现自定义文件的归类显示,就需要修改这个后缀名为vcxproj.filters的文件了。
    当然在VS中可以直接操作这个文件,从而实现这个分类。实际上也是对这个文件的操作。


    VS操作的方法:
    右击解决方案中的节点->添加->新建筛选器->就可添加一个分类,重命名删除等操作都可以右键操作。
    要定义过滤规则,右击文件夹(分类名称)后查看属性,在属性栏中,可以看到筛选器,在里面填写后缀名即可,多个后缀名中间使用英文分号隔开。名称中可以修改显示的名称等等。
    当然,以上只是简单的使用这个操作,下面我们来了解一下vcxproj.filters文件内部的格式,更清楚这个原理。这个相当于一个过滤器应用,我们学会后可以在开发中使用,这种方式挺好,我们的开发可以借鉴这种模式。
    vcxproj.filters实际上也是XML文件的应用,只是后缀名改成了这个。你可以把后缀名修改为xml,使用浏览器查看。    文件中以分组的形式对不同的功能进行分类。第一组就是Filter,用于定义过滤器。每个过滤器都有一个GUID值唯一确定。Include属性就是显示的类型名称。Extensions则是过滤的后缀名,多个后缀名使用分号隔开。你可以自己添加或者删除。过滤器没有涵盖的类型,则直接显示在根节点(项目名称节点)下。
    然后就是每个文件进行归类,同样Include属性是文件路径,Filter则是过滤器的名称。文件根据这个过滤器名称进行分类。使用None作为节点,表示编译器不直接处理的文件;头文件使用ClInclude作为节点类型,表示编译器要包含的文件;ClCompile作为节点类型的,表示编译器要进行编译的文件;ResourceCompile作为节点类型的,表示使用资源编译器来编译。这里也可以看出,头文件是不会被编译的,只是包含进去而已。
    明白以上说明,只要按照规定来操作文件,与在VS中操作是一样的效果。读者可以自己实践一下。

VS2013每次编译都重新编译整个工程的解决方案

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值