当前位置:首页 » 编程软件 » 怎么看调试过程的程序编译

怎么看调试过程的程序编译

发布时间: 2024-09-09 11:12:28

c语言中什么叫做单步调试,步骤是什么

单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。

解决这个问题的方法如下:

1、首先需要设置断点的那一行代码的最前面点击下,就会出现一个红色的圆球,代表设置断点成功,下图一共设置了4个断点。

⑵ 这个程序在DEV C++上可以运行并出现正确结果 但是提交到PTA就会报错!请赐教!

当 C 语言程序能够正常编译并运行,但可能结果可疑或不对时,即,当程序没有语法错误而可能有逻辑错误时,就需要考虑使用调试Debug功能来找出程序的 bug。



在调试过程中,可以让程序运行到设置好的断点处并暂停下来,然后通过观察相关的变量值是否正确,来判断程序的逻辑错误可能出现在哪里。



本文以 Dev-C++ 5.11 开发环境为例来说明 C 语言的调试方法。



  • 准备工作

  • 菜单:工具/编译选项

    Tools/Compiler Options

    在“设定编译器配置”Compiler set to configure中选择“TDM-GCC 4.9.2 64-bit Debug”。

    提示:

    如果是 32 位的系统,请选择“TDM-GCC 4.9.2 32-bit Debug”。

    在下方的“编译器”General选项卡中,勾选“编译时加入以下命令:”Add the following commands when calling the compiler:,并在其中输入“-g”。如上图所示。

    确定退出后,可在软件界面右上角看到或选择用于调试的编译器。

  • 设置断点

  • 断点breakpoint,指的是在调试过程中程序运行到此行代码前会临时停下,以便观察此时的某些变量值。

    可通过点击代码左侧的行号来设置断点。

    或在某行代码上右击,选择“切换断点”Toggle Breakpoint。

    或者使用快捷键:F4。

    同样的方法也可用于取消断点设置。

    断点设置建议:

    设置在 scanf 等输入语句的下一行,以观察数据是否被正确获得。

    设置在循环语句的下一行,以观察循环控制变量在循环结束后的值,或者为了避免调试过程中在循环语句段反复点击“下一步”按钮。

    设置在函数调用语句的下一行,以观察函数返回的结果值是否正确。

  • 开始调试

  • 在开始调试前,一般要先编译。

    菜单:运行/编译

    Execute/Compile

    快捷键:F9

    确保没有语法错误之后,再开始调试。

    菜单:运行/调试。

    Execute/Debug

    快捷键:F5

    或者,点击工具栏上的“”按钮。

  • 添加查看

  • 开始调试后,代码将按照常规顺序依次运行。执行到第一个断点时,才临时停止,红色行变成蓝色行,代表即将要执行的代码行。

    此时,可将鼠标指针悬浮于某个变量之上,以查看此时该变量的值。

    提示:

    对于字符变量,会同时显示字符的 ASCII 码值。

    或者,在变量上右击,选择“添加查看”Add watch,会自动将此变量添加到左侧的调试Debug面板中,以便后续跟踪查看。

    提示:

    在变量名上双击,可精准选中变量。

    或者,点击左下方的“添加查看”Add watch按钮,手动添加要查看的变量。

  • 继续或停止调试

  • 可以使用相关按钮继续调试工作。

    下一步Next line按钮

    运行下一行代码。如果下一行代码是对函数的调用,不进入函数体。

    快捷键:F7

    类似于 Turbo C++ 中的“Step Over”。

    跳过Continue按钮

    直接运行到下一个断点处。

    单步进入Into function按钮

    运行下一行代码,如果下一行是对函数的调用,则进入函数体内逐行运行。

    快捷键:F8

    类似于 Turbo C++ 中的“Trace”。

    跳过函数Skip function按钮

    当在函数内部时点击此按钮,将直接运行到函数结束,并返回到函数调用处。

    停止执行Stop Execution按钮

    停止调试,清除所有添加好的查看watch。

    快捷键:F6

    说明:

    下一条语句Next instruction按钮和进入语句Into instruction按钮,常结合CPU窗口查看并执行指令。一般的调试工作中可以不用。

⑶ 编译和调试的区别

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

1.编译和调试的区别

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

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

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

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

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

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

2.编译词法分析

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

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

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

3.编译语法分析

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

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

4.代码优化

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

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

4.编译出错处理

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

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

我总结:

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

⑷ 如何查看C程序编译后生成的汇编语言啊

VC++编译器,在按F10后,调试工具栏的最后一个,点选它后,会出现一个窗口,里面的就是程序的汇编语言。

⑸ C语言 怎么调试程序

一、在keil中调试c语言程序

1、打开我们的程序,点击菜单栏右侧的start/stopdebug..按钮,进入调试模式,如下图。

⑹ c++编译器怎样查看运行过程

你先写好你的程序,在工具栏的空白处右键,选择调试,就会出现一个调试工具,那上面的就是可以查看一步一步运行的过程路径,f11是快捷键。你慢慢研究,很好用的。给你张图!

热点内容
不同的语言编译原理 发布:2024-11-25 01:30:37 浏览:315
c编译成c 发布:2024-11-25 01:29:12 浏览:105
飞腾编译gcc 发布:2024-11-25 01:28:32 浏览:153
服务器文档设备存储需要检查什么 发布:2024-11-25 01:27:10 浏览:342
名词算法 发布:2024-11-25 01:24:54 浏览:675
我的电脑玩cf卡该换什么配置 发布:2024-11-25 01:20:38 浏览:871
云加密服务是什么情况 发布:2024-11-25 01:18:16 浏览:881
租云服务器会提供ip吗 发布:2024-11-25 01:18:13 浏览:451
安卓原生刷机包在哪里下载 发布:2024-11-25 01:13:16 浏览:298
安卓怎么改字体 发布:2024-11-25 01:12:32 浏览:477