当前位置:首页 » 编程软件 » 调试不编译

调试不编译

发布时间: 2023-09-15 05:24:31

‘壹’ 请教编译与调试的区别是什么

不调试直接编译,省去调试步骤,节约CPU计算资源等。所以说“代价小”。不过一般调试也占用不了多少资源。

‘贰’ DevC++ 在编译后调试时却弹出对话框“源文件未编译”或"工程未编译"是怎么回事

  1. (关于银杏秋色的回答)工具>编译选项>目录>二进位档:加入 C:Dev-Cpplibexecgccmingw323.4.2

    (是编译选项不是编译器,自己试过的,2没试

    而且我试过1之后貌似并没有用,大概虽然情况一样但是根本问题不同吧)

2.我自己的问题是这样解决的:(嗯我就是没有设置编译器,)

工具>编译选项>设定编译器配制>然后随便选一种编译器

‘叁’ 我的KEIL无法编译,怎么办

两种可能:
1.KEIL安装设置有问题(破解),检查运行其他程序是否正常。
2.源程序有问题,可能串口设定不对,太快或者是死循环,请调试。
好久没用KEIL了,自己试一试吧!

‘肆’ 源文件未编译怎么解决

解决方法如下:

操作设备:戴尔笔记侍歼局本电脑

操作系统:win10

操作程序:DEV-C++ v2.01

1、首先我们打开DEV-C++,点击菜单栏中的“工具”,点击“编译选项”这个选项,打开编译选项对话框。

‘伍’ 为什么我的c语言只能调试不能编译,一调试就闪退,加system("pause")也没用

你的printf函数输出结果的时候应该有问题的,你的/n应该修改为\n。因为\表示转义字符\n表示换行,这个/还真不知道代表什么意思了。

‘陆’ 程序无法编译通过问题,怎么解决

关于程序无法通过编译的问题,其错误类型肯定是有很多种的。根据我多年的编程调试经验,可以给你提供以下几种类型的错误,供你参考(以下以 C 语言编程经验为例,其他编程语言的调试思路也是同理的)。
其中最容易调试的程序错误类型就是:
(1)、在编写源程序过程中出现的各种语法错误。这种错误主要是由于刚刚开始学习编程,对编程语言的语句、以及语法结构还不是很清晰造成的,这种错误是最容易进行调试的,因为语法错误,编译器连编译都无法通过(通常会显示出来具体是哪一行出现错误),这样的话,你就可以直接到出错的那一行进行修改源代码了;

(2)、若是经过一段时间的上机练习,对学习编程的初始阶段已经较为熟练了、且语法错误较少了之后,之后就会遇到更加复杂、并且难于调试的语义错误。例如在 C 语言中,对于如下代码:

void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
但是若在逻辑判断语句:if( n == 100) 中,如果误将“==”(逻辑等于)写成了“=”(赋值等于),那么在 scanf("%d", &n) 语句中,无论你输入的 n 等于多少,一旦执行 if 语句,那么 将 100 这个数字赋给变量 n,则该逻辑表达式的值总是 1,程序的运行结果必定总是输出:n is 100。
而该程序的实际思路是:从键盘输入一个整数,如果该整数等于 100,则输出:n is 100 !如果输入的整数不等于 100 的话,则输出:n is not 100 !
像这样的逻辑错误(在对 C 语言源程序进行编译时,C 语言编译器是检查不出来的),如果没有丰富的程序调试经验,程序调试起来就是非常困难的。
(3)、其它的错误类型例如:数组越界、非法使用了未初始化的指针变量、未对指针变量进行有效的内存分配,就向那一块存储区域读写数据,等等。这些都会造成程序崩溃,严重的就会造成操作系统崩溃。

‘柒’ 编译和调试的区别

编译和调试都是写程序的重要环节。它们两者有什么区别呢?下面,我跟大家分享一下编译和调试的区别。

1.编译和调试的区别

编译是编译器在你程序没有运行的时候帮你检查错误。

调试是你用调试器在程序运行以后,根据运行状况来检查错误。

这两者的不可逆的,首先得编译通过,你才能调试啊,编译正确后,会生成exe文件,IDE中启动程序,可以进行调试。

编译是把源代码变成二进制obj的过程(链接后成为可执行文件),当然会先帮你检查有无简单的语法问题,要不编译器人家不认识,你自己说的有无逻辑就和编译器无关了。

调试首先需要生成二进制代码,所以需要首先进行编译和链接,然后到断点后,调试器会帮你加int 3中断,就停住了。

编译关注语法错误,调试关注逻辑错误。也就是说编译关注的是syntax(语法)方面的问题,调式关注的是semantics(语义)方面的问题。

2.编译词法分析

词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。

源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。

词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。

3.编译语法分析

编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。

语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。

4.代码优化

代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。

有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。

4.编译出错处理

如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。

需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。逻辑错误要通过调试。

我总结:

看完了上面的比较,你现在还能区别编译与调试吗?其实,只要记住这句话:“编译关注语法错误,调试关注逻辑错误,先有编译,后有调试”,就不会忘了两者的区别了。

热点内容
sql语句视图 发布:2024-11-19 08:30:23 浏览:932
ftpjava上传 发布:2024-11-19 08:30:09 浏览:407
苹果摄像机为什么比安卓清晰 发布:2024-11-19 08:20:20 浏览:830
为什么安卓手机下载不了微信 发布:2024-11-19 08:19:37 浏览:836
android情景分析 发布:2024-11-19 08:19:36 浏览:190
系统存储设备容量 发布:2024-11-19 08:05:28 浏览:994
向外访问 发布:2024-11-19 07:50:21 浏览:555
androidbase64图片 发布:2024-11-19 07:48:45 浏览:727
搭建小说网站国外服务器 发布:2024-11-19 07:42:49 浏览:799
在家如何更改网络密码 发布:2024-11-19 07:36:21 浏览:797