打印

C51模块调试出现问题??

[复制链接]
1977|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cypjgbz|  楼主 | 2007-3-16 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-3-16 12:17 | 只看该作者

执行到H文件中????

使用特权

评论回复
板凳
cypjgbz|  楼主 | 2007-3-16 15:33 | 只看该作者

对,单步调试就是进不去

使用特权

评论回复
地板
pigjiang| | 2007-3-16 15:58 | 只看该作者

H文件里就一个Define啊,进去干嘛?

使用特权

评论回复
5
computer00| | 2007-3-16 16:22 | 只看该作者

define是宏定义,在C里面展开的,所以还在C那里,

是不会跳到.h里面的,只是一个宏展开后可能有很多语句。

使用特权

评论回复
6
cypjgbz|  楼主 | 2007-3-17 08:54 | 只看该作者

看来你们没有理解我的意思

但.H文件里还有程序在阿。
假如void Play(void)放在.H文件里,
但在主程序里有:
void main(void)
{
while(1)
 {
 void Play(void)
 }
}
单步执行的话,怎么看void Play(void)是否正确阿??

使用特权

评论回复
7
cypjgbz|  楼主 | 2007-3-17 08:55 | 只看该作者

就比如该程序,单步调试怎么去调试阿??

使用特权

评论回复
8
平常人| | 2007-3-17 09:25 | 只看该作者

C语言的编译器始终是把目标代码与C文件相关联的,与H文件

H文件只在编译过程的预处理阶段用到;在预处理阶段,所有的H文件中的内容被原封不动地拷贝到C文件中出现#include的地方,并暂存在一个临时文件中,所有C文件中的语句行号也被记录在了临时文件中(C文件中的第n行因为H文件的缘故,在临时文件中被移动了),编译阶段处理的是临时文件中的内容,C语句的行号也在编译结束后记录在了可调试的目标代码中,用以标示目标代码与原C文件中语句关系。

从以上过程可看出,H文件中的所有语句在C文件中只有一个相同的行号,即通过目标代码的索引找到C文件时,C文件中没有相应的语句,因此造成源程序级别的调试不能进行。

有些编译调试环境,解决了这种问题,但多数IDE没有处理这类情况,因为很少有人把代码写到H文件中。

使用特权

评论回复
9
cypjgbz|  楼主 | 2007-3-17 10:59 | 只看该作者

XIEXIE

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

77

帖子

0

粉丝