BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

搞定一个找了几天的BUG
首页 » 论坛 » C/C++ »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
版主 converse   帅哥
广告杀手-法王
Stupid is as stupid does.




UID:117516
注册:2003-12-7
最后登录: 2008-09-07
帖子:12169
精华:13

可用积分:4977 (小富即安)
信誉积分:145
专家积分:130 (本版:10)
空间积分:0
推广积分:0

来自:芒果花开的地方
状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-6-13 18:05 
示例代码如下,其实看明白了就知道很简单,只是代码多了起来的时候不容易发现

config.h

#ifndef __CONFIG_H__
#define __CONFIG_H__

#include <stdio.h>
#define USE_LIST

#endif

node.h

#ifndef __NODE_H__
#define __NODE_H__

struct node
{
#ifdef USE_LIST
        struct node* prev;
        struct node* next;
#endif
        int i;
};

#endif

1.h

#ifndef __1_H__
#define __1_H__

#include "config.h"
#include "node.h"

void f1()
{
        printf("in f1(), sizeof(struct node) = %d\n", sizeof(struct node));
}

#endif

2.h

#ifndef __2_H__
#define __2_H__

#include "node.h"
#include "config.h"

void f2()
{
        printf("in f2(), sizeof(struct node) = %d\n", sizeof(struct node));
}

#endif

test.cpp 可以注释或者不注释最开始的宏分别调用1.h和2.h中的两个函数打印出node的大小

#define USE_1

#ifdef USE_1
#include "1.h"
#else
#include "2.h"
#endif

int main()
{
#ifdef USE_1
        f1();
#else
        f2();
#endif

        return 0;
}

由于1.h和2.h对node结构体的大小计算不一致,造成了问题,找了几天终于找到了问题所在.

以后再遇到这样的问题,我的做法是把这些预定义的宏集中放在一个文件中,并且放在每个需要该头文件的文件中包含头文件的最开始位置.



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

唯坚持,得成功.
C++名人Alexandrescu说,"十几岁的少年天才到处都有,三十多岁的优秀设计师凤毛麟角".我做不了十几岁的少年天才,但愿到三十多岁时能成为一个优秀工程师.

卖书: http://bbs.chinaunix.net/thread-1053812-1-1.html
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
Godbach (To be 千里马!)
精灵使


CU奥运火炬传递手2008
UID:534931
注册:2007-3-9
最后登录: 2008-09-07
帖子:3567
精华:4

可用积分:6257 (富足长乐)
信誉积分:105
专家积分:69 (本版:1)
空间积分:2
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2008-6-13 18:07 
恭喜一把。
上周偶也是这样,整了好几天,总算把BUG解决了。心里轻松了。

要是一直搞不定的BUG怎么办呢?

[ 本帖最后由 Godbach 于 2008-6-13 18:08 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
----------------------------------
一尺之槌,日取其半,万世不竭!
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
版主 converse   帅哥
广告杀手-法王
Stupid is as stupid does.




UID:117516
注册:2003-12-7
最后登录: 2008-09-07
帖子:12169
精华:13

可用积分:4977 (小富即安)
信誉积分:145
专家积分:130 (本版:10)
空间积分:0
推广积分:0

来自:芒果花开的地方
状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2008-6-13 18:11 
回复 #2 Godbach 的帖子

我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

唯坚持,得成功.
C++名人Alexandrescu说,"十几岁的少年天才到处都有,三十多岁的优秀设计师凤毛麟角".我做不了十几岁的少年天才,但愿到三十多岁时能成为一个优秀工程师.

卖书: http://bbs.chinaunix.net/thread-1053812-1-1.html
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
Godbach (To be 千里马!)
精灵使


CU奥运火炬传递手2008
UID:534931
注册:2007-3-9
最后登录: 2008-09-07
帖子:3567
精华:4

可用积分:6257 (富足长乐)
信誉积分:105
专家积分:69 (本版:1)
空间积分:2
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2008-6-13 18:14 


QUOTE:
原帖由 converse 于 2008-6-13 18:11 发表
我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.

是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
----------------------------------
一尺之槌,日取其半,万世不竭!
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
c/c++
新手




UID:717657
注册:2008-6-13
最后登录: 2008-08-10
帖子:3
精华:0

可用积分:3 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2008-6-13 18:18 
学习



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
ruoyisiyu   帅哥 (七仔)
天使
王家二哥



UID:552472
注册:2007-4-16
最后登录: 2008-09-06
帖子:1099
精华:0

可用积分:744 (稍有积蓄)
信誉积分:115
专家积分:5 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2008-6-13 18:46 


QUOTE:
原帖由 Godbach 于 2008-6-13 18:14 发表


是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。

不过加调试语句的时候一定不能太啰嗦,也不能太简单。。更忌讳那些几个调试语句的绝对相似性(除了__LINE__,输出都相似)
                          -------个人意见



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

好好学习,天天向上!
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
Alligator27   帅哥
风云使者



UID:245444
注册:2005-3-27
最后登录: 2008-08-29
帖子:507
精华:0

可用积分:588 (稍有积蓄)
信誉积分:100
专家积分:120 (本版:120)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


7楼 发表于 2008-6-13 20:17 
这种configuration macro,我们一般作为compiler option.
DEFINES=-DUSE_LIST
COMP_OPT=$(DEFINES) ....

[ 本帖最后由 Alligator27 于 2008-6-13 20:50 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

If you tell the truth, you don't have to remember anything.  -- Mark Twain

My Open Source Project:   http://accutrak.sourceforge.net
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
myhello
精灵



UID:709998
注册:2008-5-25
最后登录: 2008-07-07
帖子:223
精华:0

可用积分:207 (白手起家)
信誉积分:10
专家积分:6 (本版:0)
空间积分:815
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2008-6-13 20:28 
个人感觉
放在编译选项里
好像好一些~~~

不过什么时候应该放在文件里呢



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


漂过, 飘过 ...
我什么也没看见 ...
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
Alligator27   帅哥
风云使者



UID:245444
注册:2005-3-27
最后登录: 2008-08-29
帖子:507
精华:0

可用积分:588 (稍有积蓄)
信誉积分:100
专家积分:120 (本版:120)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


9楼 发表于 2008-6-13 20:52 
回复 #8 myhello 的帖子

那就是非configuration的东西了。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

If you tell the truth, you don't have to remember anything.  -- Mark Twain

My Open Source Project:   http://accutrak.sourceforge.net
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
myhello
精灵



UID:709998
注册:2008-5-25
最后登录: 2008-07-07
帖子:223
精华:0

可用积分:207 (白手起家)
信誉积分:10
专家积分:6 (本版:0)
空间积分:815
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2008-6-13 21:07 


QUOTE:
原帖由 Alligator27 于 2008-6-13 20:52 发表
那就是非configuration的东西了。

看不懂了,请教大虾~~~

是不是设置宏有两种方式:
1. makefile 文件里
2. 放在一个单独的头文件里

我的意思是放在 makefile 里方便设置, 不用经常修改源文件

是不是这样~~~
我是新手

不知道使用这两种使用有各有什么优势~~~



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


漂过, 飘过 ...
我什么也没看见 ...
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » C/C++ »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.056345 second(s), 4 queries , Gzip enabled