C-Free 5 程序的单步调试

合集下载

关于C语言程序的调试

关于C语言程序的调试
单击”终止调试”(Stop Debuging)
终止调试.
2021/10/10
32
把循环条件: (M<0 && n<0) 改为: ( M<0 || n<0)
关闭工作区间,重新编译,设置二个断点.
2021/10/10
点击图标(GO),运行.
如输入: -3 7.
再点击图标(GO),程序不向下走.
说明有问题:输入数据不对!
注:202如1/10果/10程序代码多,可设多个断点,。
17
三. 运行到光标处:
调试程序示例2:
输入一个5~10之间的整数n,求:1!+2!+…..n!.
#include <stdio.h>
void main()
{ int n=0,i=1,s,k=1;
printf("请输入5-10之间任意数:\n");
中间有一输入语句, 输入数据:-3 7
2021/10/10
29
2021/10/10
程序运行到第 一个断点.
在”变量窗口”观察到: m=-3, n=7.
30
2021/10/10
在”变量窗口”观察到:
m= -3, n=7. 在此处发现问题…….
再次点击此图标 (GO),运行到第二 个断点处.
31
什么问题? 是因为数据输入不对! 程序要求不允许输入负数,二个数必需为正数,否则 程序不能往下走.
1. 开始单步调试: 2. 单击”单步执行”(Step
Over(F10))
2021/10/10
10
变量窗口.
2021/10/10
显示或隐藏观 察窗口.
显示或隐藏变 量窗口.

c free 5 教程

c free 5 教程

c free 5 教程C语言是一种通用的高级编程语言,广泛应用于开发各种软件和系统。

它是由Dennis Ritchie在20世纪70年代早期在贝尔实验室开发的,主要用于Unix操作系统的开发。

C语言具有简洁、高效和灵活的特点,成为了学习编程的入门语言之一。

首先,C语言的基本语法相对简单,易于理解和学习。

它采用了类似英语的结构和符号,使编程变得更加直观和自然。

例如,C语言的基本结构由函数和语句构成,函数由函数名、参数列表和函数体组成,语句由语句类型和分号构成。

这些基本元素使得C语言的代码可读性很高,方便程序员进行阅读和理解。

其次,C语言提供了丰富的库函数,这些函数可以方便地完成各种任务。

C标准库包含了大量的函数,如输入输出函数(如printf、scanf)、数学函数(如sqrt、sin)、字符串处理函数(如strcpy、strlen)等等。

这些函数可以直接调用,避免了编写繁琐的底层代码,提高了开发效率。

另外,C语言是一种高效的编程语言,可以生成高效的机器代码。

它的语法和结构简洁明了,避免了冗余和复杂的部分,提高了编译和执行的效率。

C语言还提供了指针的功能,允许直接访问内存地址,对于底层系统编程和性能优化非常有用。

此外,C语言还具有良好的可移植性和跨平台性。

由于C语言代码可以编译生成机器代码,可以在不同的操作系统和硬件平台上运行,只需进行少量的修改。

这使得C语言成为了开发跨平台软件和系统的首选语言之一。

最后,C语言的学习资源非常丰富,有大量的教程、书籍、在线论坛和社区,可以帮助初学者快速入门。

在学习过程中,可以通过编写小程序来巩固所学知识,逐步提升编程能力。

C语言还有大量的实际应用,如操作系统、数据库、嵌入式系统等,可以通过实践项目来提高编程水平。

综上所述,C语言是一种简洁、高效和灵活的编程语言,适合初学者入门学习。

它的基本语法简单易懂,库函数丰富,生成高效的机器代码,具有良好的可移植性和跨平台性。

C Free 5程序调试方法

C Free 5程序调试方法

C Free 5程序调试方法程序调试是软件开发过程中非常重要的一环,它可以帮助开发人员找出程序中的错误并进行修复。

在C语言中,程序调试是一项必不可少的技能。

本文将介绍C语言中常用的5种程序调试方法,以帮助开发人员更好地调试程序。

1. 使用printf语句调试:printf语句是C语言中最常用的调试工具之一。

通过在程序中插入printf语句,可以输出程序执行过程中的变量值、状态信息等,以便于观察程序的执行流程和变量的取值情况。

例如:```cint main() {int a = 10;printf("a的值为:%d\n", a);return 0;}```通过在程序中插入printf语句,可以观察到变量a的值为10,从而判断程序是否按照预期执行。

2. 使用断点调试:断点调试是一种常用的调试方法,它可以在程序执行过程中暂停程序的执行,以便于观察程序的执行状态和变量的取值情况。

在C语言中,可以使用调试器(如GDB)设置断点。

例如,在Linux环境下使用GDB调试程序,可以按照以下步骤设置断点:- 编译程序时加上-g选项,以便生成调试信息:```gcc -g program.c -o program```- 启动GDB调试器:```gdb program```- 设置断点:```break line_number```- 运行程序:```run```- 程序执行到断点处时会暂停,可以通过命令观察变量的取值情况,以及进行单步调试、查看栈帧等操作。

3. 使用assert宏调试:assert宏是C语言中的一个调试工具,它用于检查程序中的条件是否满足,如果条件不满足,则终止程序的执行,并输出错误信息。

使用assert宏可以在程序中插入一些断言,以确保程序的正确性。

例如:```c#include <assert.h>int divide(int a, int b) {assert(b != 0);return a / b;}int main() {int result = divide(10, 0);return 0;}```在上述代码中,使用assert宏判断除数b是否为0,如果为0,则终止程序的执行,并输出错误信息。

cfree使用技巧

cfree使用技巧

cfree使用技巧
1. 代码折叠:C-Free 支持代码折叠功能,可以将代码中的函数、类等折叠起来,以便更好地查看代码结构。

在代码编辑器中,单击代码左侧的减号按钮即可折叠代码块,单击加号按钮即可展开代码块。

2. 代码格式化:C-Free 提供了代码格式化功能,可以自动调整代码的缩进和空格,使代码更加易读。

在代码编辑器中,选择要格式化的代码,然后按下 Ctrl+Shift+F 键即可进行代码格式化。

3. 智能提示:C-Free 提供了智能提示功能,可以在编写代码时自动提示函数、变量等信息。

在代码编辑器中,输入函数名或变量名的前几个字母,然后按下 Ctrl+Space 键即可显示相关的提示信息。

4. 语法检查:C-Free 提供了语法检查功能,可以检查代码中的语法错误,并给出相应的提示信息。

在代码编辑器中,选择要检查的代码,然后按下 F8 键即可进行语法检查。

5. 调试功能:C-Free 提供了调试功能,可以在程序运行时查看变量的值、单步执行等。

在代码编辑器中,设置断点,然后按下 F5 键即可启动调试器。

6. 代码模板:C-Free 提供了代码模板功能,可以快速创建常见的代码结构,如 for 循环、if 语句等。

在代码编辑器中,输入相应的代码模板关键字,然后按下 Tab 键即可自动生成代码模板。

以上是一些 C-Free 的使用技巧,可以帮助你更好地使用这款开发工具。

当然,C-Free 还有很多其他的功能和技巧,你可以根据自己的需求和习惯进行探索和使用。

C Free 5程序调试方法

C Free 5程序调试方法

C Free 5.0 程序的单步调试创建一份新的代码文件可直接点击“文件”下的白色图标,或点击“文件”选择“新建”,或按快捷键“Ctrl + N”(C Free 5.0默认情况下新建的代码文件为.cpp 格式,可在“工具”、“环境选项”、“新建文件类型”中更改,C语言标准格式为.c 格式)基于实例的C程序调试介绍一、查看变量的内容# include <stdio.h>int main(intargc, char* argv[]){int i;int sum;sum=0;for(i=1;i<=10;i++)sum=sum+i;printf("sum=%d",sum);return 0;}第一步,打开C Free 5.0,输入上面的代码。

第二步,把光标移到“sum=0;”这一行,按F10它的作用是设一个断点,程序运行到这里时,会停下来。

也就是说,接下来,程序必须通过按F7键单步运行了。

第三步:按F9 (开始调试)我们发现有一箭头停留在这句语句上,它指示程序停留的位置,而箭头所在的语句(“sum=0;”)还没有执行。

事实上,我们可以通过看一下内存变量sum的内容来验证。

方法是这样的:打开“调试”下的“监视”,或者按快捷键“Alt + 3”。

在“监视”的空白处点击鼠标右键,选择“添加监视”。

输入需要监视的变量名,这里输入为sum这时我们可以在监视窗口中看到sum的内容不为0,而是一个随机的值。

第四步,我们按一下F7(进入),我们发现sum的内容变为0了。

这说明“sum=0;”这句语句被执行了。

我们还可以用同样的方法看一下i的内容。

只需要鼠标点第六步,一步一步地按F7,我们可以发现在单步执行for循环语句的时候i和sum的内容在不断变化。

当退出循环时,我们发现i的内容为11(因为变量i的内容为11,i<=10这个条件不满足,所以程序退出循环)。

附带提一下,当程序已经执行了“sum=0;”这一句语句后,如果我们直接把光标移到“printf("sum=%d",sum);”,然后按Ctrl+ F8,我们可以直接把上面的for循环都执行了,而不必一步一步地按F7。

一款支持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好用)

一款支持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好用)

⼀款⽀持多种编译器的专业化CC++集成开发环境(IDE---C-Free5(亲测好⽤)C-Free是⼀款⽀持多种编译器的专业化C/C++集成开发环境(IDE)。

利⽤本软件,使⽤者可以轻松地编辑、编译、连接、运⾏、调试C/C++程序⽰例:#include <stdio.h>int main(){puts("C语⾔中⽂⽹");return 0;}编译报错:--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------正在编译 E:\9.C\hello.c...[Warning] E:\9.C\hello.c:6:2: warning: no newline at end of file[Error] gcc.exe: 5\mingw\include: No such file or directory[Error] gcc.exe: 5\mingw\include\c++\3.4.5: No such file or directory[Error] gcc.exe: 5\mingw\lib\gcc\mingw32\3.4.5\include: No such file or directory[Error] gcc.exe: 5\mingw\bin\: No such file or directory[Error] gcc.exe: 5\mingw\mingw32\bin\: No such file or directory编译中⽌ E:\9.C\hello.c: 5 个错误, 1 个警告解决⽅法:关闭C-FREE 5软件,在安装位置D:\C-Free 5\重命名为D:\C-Free5\,即将空格删去,然后重新打开c-free5(桌⾯快捷⽅式可能⽤不了,在安装位置处打开),打开D:\C-Free5\workspace\wxy\new1.cpp⽂件再运⾏就没有问题了总结:win10 不⽤安装编译器mingwc-free5的安装路径不能有空格出现这种问题不⽤卸载再安装,重命名即可。

VC如何单步调试程序如何使用VC调试程序

VC如何单步调试程序如何使用VC调试程序

VC 如何单步调试程序如何使用VC调试程序VC++如何单步调试程序?如何使用VC++调试程序VC调试快捷键Debug版本与Release版2011-03-24 09:19一.步骤&快捷键:F9在你需要停下的地方设置断点F5进入调试F10单步运行F11进入函数二.1.如何在Release状态下进行调试Project-Setting=ProjectSetting对话框,选择Release状态。

C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info 选Program Database。

在Link标签中选中Generate debug info复选框。

注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY 都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。

2.Release和Debug有什么不同Release版称为发行版,Debug版称为调试版。

Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。

Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。

Release的exe文件链接的是标准的MFC DLL(Use MFC in ashared or static dll)。

这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++6.0的机器上运行。

而Debug版本的exe链接了调试版本的MFC DLL文件,在没有安装Visual C++6.0的机器上不能运行,因为缺相应的DLL,除非选择use static dll when link。

3.ASSERT和VERIFY有什么区别ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然翻译,但不再判断真假。

单片机程序调试步骤

单片机程序调试步骤

单片机程序调试步骤单片机程序调试是嵌入式开发中非常重要的一步,它决定了最终产品的质量和性能。

在进行单片机程序调试之前,我们需要梳理清楚调试的步骤和方法,以确保调试的顺利进行。

本文将为您介绍单片机程序调试的基本步骤。

一、准备工作在开始调试之前,我们需要做一些准备工作。

首先,确保您的硬件设备正常工作,并且与开发环境连接良好。

其次,检查程序代码是否正确,排除语法错误和逻辑错误。

最后,准备好调试工具和设备,如仿真器、调试器等。

二、单步调试单步调试是最基本的调试方法之一,它可以帮助我们逐条执行程序代码,并观察运行结果。

在单步调试过程中,可以使用断点、观察变量、查看寄存器等功能,以帮助我们分析问题所在。

通过单步调试,我们可以逐步定位和排除程序错误。

三、观察变量变量的值在程序运行过程中会发生改变,观察变量的值可以帮助我们判断程序是否按照预期运行。

在调试过程中,可以选择性地观察一些关键变量,通过比较变量的值和预期结果,找出问题所在。

观察变量的值可以通过调试工具提供的相关功能进行。

四、寄存器调试寄存器是单片机中非常重要的组成部分,它们存储了程序运行过程中的各种数据和状态。

在调试过程中,我们可以通过查看和修改寄存器的值来对程序进行调试。

例如,检查程序计数器是否正确指向当前指令,检查状态寄存器是否符合预期等。

五、信号跟踪在调试复杂的单片机程序时,有时我们需要追踪特定的信号或事件,以查明问题所在。

信号跟踪可以帮助我们观察程序中不同模块之间的数据传输和状态变化。

通过追踪信号,我们可以找到程序中潜在的逻辑错误或数据异常。

六、错误信息分析在进行单片机程序调试时,经常会出现各种错误信息。

这些错误信息可以是程序中的编译错误、运行时错误或设备响应错误。

对于不同类型的错误信息,我们需要进行相应的分析和处理。

通过错误信息的分析,我们可以精确定位问题,并采取相应的调试措施。

七、固件更新有时,单片机程序的错误可能由于软件固件的问题导致。

在这种情况下,我们需要对固件进行更新。

c语言单步调试的步骤

c语言单步调试的步骤

C语言单步调试步骤单步调试是程序员在开发过程中常用的调试方法,它可以帮助我们逐步执行代码,检查每一步的结果,从而找出问题所在并进行修复。

下面是C语言单步调试的一般步骤:1. 编译代码在使用调试器之前,首先需要将代码编译成可执行文件。

在终端或IDE中输入编译命令,将源代码编译成可执行文件。

例如,使用gcc编译器编译C语言源代码:```bashgcc -o program program.c```2. 启动调试器调试器是一种用于单步执行程序的工具,它可以让我们观察程序在每一步执行时的状态。

在Linux系统中,常用的调试器有gdb和lldb等。

启动调试器并加载可执行文件:```gdb program```3. 设置断点断点是用于暂停程序执行的位置。

在调试过程中,我们通常在程序的关键位置设置断点,以便观察变量值和程序状态。

在调试器中设置断点:```phpbreak main```上述命令将在main函数处设置断点。

我们可以根据需要设置多个断点。

4. 开始调试在设置好断点后,使用调试器的“run”命令开始执行程序:run```程序将执行直到遇到断点并暂停。

5. 检查变量当程序在断点处暂停时,我们可以检查变量的值和程序状态。

在gdb中查看变量值:```phpprint variable_name```可以使用上述命令查看变量值。

我们还可以使用其他调试命令来检查程序状态。

6. 单步执行使用调试器的“step”命令单步执行程序:step```如果遇到函数调用,使用“next”命令逐行执行函数:```arduinonext```7. 观察输出在调试过程中,我们可以观察程序的输出以了解程序的执行情况。

在终端中查看输出:```bashprogram arg1 arg2 ...```8. 修复错误根据调试过程中的观察和检查,我们可以找到并修复代码中的错误。

修复错误后,重新编译并启动调试器进行测试。

9. 重复调试重复执行上述步骤,直到程序能够正确执行并完成预期结果。

C-Free使用教程(完整版)

C-Free使用教程(完整版)

C-Free使⽤教程(完整版)C-Free C/C++IDE使⽤⼿册C/C++教研组编写版权所有,请勿转载⽤于商业⽤途2019年8 ⽉⽬录2 C-Free 的软件特性 (1)3 安装C-Free 5.0 (2)4 C-Free使⽤⽅法 (5)5 运⾏C语⾔代码 (8)5.1 新建源⽂件 (8)5.2 编写源代码 (11)5.3 编译和链接 (12)5.4 运⾏程序 (13)5.5⽅法总结 (15)6 C-Free常见问答 (16)7 C-Free更新 (20)1 C-Free 介绍C-Free是⼀款国产的Windows下的C/C++ IDE,最新版本是 5.0,整个软件才 14M,⾮常轻巧,安装简单。

利⽤本软件,使⽤者可以轻松地编辑、编译、连接、运⾏、调试C/C++程序。

C-Free中集成了C/C++代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提⽰。

C-Free提供了对⽬前业界主流C/C++编译器的⽀持,你可以在C-Free中轻松切换编译器。

可定制的快捷键、外部⼯具以及外部帮助⽂档,使你在编写代码时得⼼应⼿。

完善的⼯程/⼯程组管理使你能够⽅便的管理⾃⼰的代码。

2 C-Free 的软件特性1、C-Free⽀持多编译器,可以配置添加其他编译器;⽬前⽀持的编译器类型:(1) MinGW 2.95/3.x/4.x/5.0(2) Cygwin(3) Borland C++ Compiler(4) Microsoft C++ Compiler(5) Open Watcom C/C++(6) Digital Mars C/C++(7) Ch Interpreter2、增强的C/C++语法加亮器,(可加亮函数名,类型名,常量名等);3、 C-Free增强的智能输⼊功能;4、可添加语⾔加亮器,⽀持其他编程语⾔;5、可添加⼯程类型,可定制其他的⼯程向导;6、完善的代码定位功能(查找声明、实现和引⽤);7、代码完成功能和函数参数提⽰功能;8、能够列出代码⽂件中包含的所有符号(函数、类/结构、变量等);9、⼤量可定制的功能可定制快捷键可定制外部⼯具可定制帮助(可⽀持Windows帮助、Html帮助和在线帮助);10、彩⾊、带语法加亮打印功能;11、在调试时显⽰控制台窗⼝;12、⼯程转化功能,可将其他类型的⼯程转化为C-Free格式的⼯程,并在C-Free中打开。

C Free 5程序调试方法

C Free 5程序调试方法

C Free 5程序调试方法C Free 5是一款常用的C语言集成开辟环境(IDE),它提供了许多方便的功能,其中最重要的之一是程序调试。

在软件开辟过程中,调试是一个不可或者缺的环节,它可以匡助开辟人员找出程序中的错误并进行修复。

本文将介绍C Free 5中的五种常用的程序调试方法,以匡助读者更好地利用这一强大工具。

第一种调试方法是使用断点。

断点是调试过程中的一个标记点,当程序执行到这个点时会暂停运行,开辟人员可以在此时检查变量的值、观察程序的执行流程等。

在C Free 5中,设置断点非常简单。

只需在代码行的左侧单击鼠标左键即可添加断点,再次单击即可取销断点。

通过设置适当的断点,开辟人员可以有针对性地调试程序,提高调试效率。

第二种调试方法是使用单步执行。

单步执行允许开辟人员逐行执行程序,以便查看程序的执行过程。

C Free 5提供了多种单步执行的方式,如单步进入、单步过程、单步返回等。

这些方式可以匡助开辟人员深入理解程序的工作原理,并找出可能存在的问题。

第三种调试方法是使用观察窗口。

观察窗口可以显示变量的值,开辟人员可以在程序运行过程中实时监测变量的变化。

在C Free 5中,观察窗口可以通过菜单栏的“调试”选项打开,并在需要监测的变量上右键单击选择“添加到观察窗口”。

通过观察窗口,开辟人员可以及时发现变量值的异常或者错误,从而更快地找到问题所在。

第四种调试方法是使用条件断点。

条件断点是一种特殊的断点,惟独当满足特定条件时,程序才会在该处暂停执行。

在C Free 5中,可以通过在断点上右键单击并选择“条件”来设置条件断点。

条件断点可以匡助开辟人员在特定情况下定位问题,提高调试的针对性。

第五种调试方法是使用日志输出。

日志输出是一种将程序运行信息输出到文件中的方法,开辟人员可以通过查看日志文件来了解程序的执行情况。

在C Free 5中,可以使用printf函数将需要输出的信息打印到日志文件中。

通过分析日志文件,开辟人员可以找到程序中的潜在问题,并进行相应的调试。

在C-Free中调试C语言程序

在C-Free中调试C语言程序

程序编写是一项严谨而细致的工作,稍有不慎,在代码中多一个字符或少一个字符,都可以导致语法错误或功能逻辑错误,要么不能通过编译,要么不能实现程序的功能目标。

而程序调试将是让程序趋于完善的必要手段,一个程序员必须会调试程序。

下面以“删除字符串中指定字符”为例介绍在C-Free中程序调试的基本操作。

一、编译运行程序1.“删除字符串中指定字符”的程序源代码,如下所示。

#include <stdio.h>int main(){int i,j;char s[]="cecccvccccbcpccedfmcccuec";char c;printf("原始字符串为:\n");puts(s);printf("请输入要删除的字符:\n");c=getchar();for(i=0;s[i]!='\0';i++){if(s[i]==c)for(j=i;s[j]!='\0';j++)s[j]=s[j+1];}printf("删除指定字符后的字符串为:\n");puts(s);return 0;}2.在C-Free中打开程序delrc.c源程序,按F11编译程序,成功完成编译,无警告和错误提示,这说明没有语法错误。

3.按F5运行程序,要删除字符串中的字符c,结果如下所示,我们发现程序没有实现既定的功能目标,说明程序存在功能逻辑错误。

二、调试程序调试程序的基本操作是设置程序断点,然后单步跟踪执行,并监视各关键变量值的变化是否满足功能逻辑的要求来发现程序错误。

修改错误代码后,重新编译运行程序,如果问题没有排除,则需要再次进行程序调试。

要使用程序调试功能,在C-Free中的编译器选择列表右边,让编译器构建的程序处于Debug调试状态,编译器列表将中编译器名前将显示[D]标志。

1.设置程序断点,程序断点是在程序中设置的一个停止运行的标记,当程序运行到断点标记处,程序将暂停并等待程序员的控制。

C语言编译环境_C-Free使用教程

C语言编译环境_C-Free使用教程

C语言编译环境除C-Free外,我们常用的还有VS2010、VS2012等可供选择,因为C-Free使用起来比较简单,这里就提供C-Free的教程!
Step 1: 解压,打开C-Free 5
Step 2: 双击CppIDE.exe,如图
Step 3: 单击“新建空白文件”
如果出现的提示框不是这个
而是
则点击“取消”,
然后单击
Step 4:建好文件后就可以开始写代码了
Set 5:编写代码→运行
下面是一个C语言代码的范例:
#include <stdio.h>
int main()
{
printf(“I Like ACM\n”);
return 0;
}
(看不懂? 没关系,自学下就懂了,网上很多C语言教程的)
湿弟湿妹们趁暑假还有时间可以自学下C语言,运用学到的知识写出自己的代码。

(完)
====================ACM协会官方提供=================。

CFree 调试

CFree 调试

CFree-调试
1.设置断点
如果要在某行设置断点,则在表示改行的数字前单击鼠标左键(或者F10快捷键)
然后上图红色框左边会有一颗红点出现,并且改行的背景会变成粉红色,标志断点设置成功。

(如下图所示)
2.开始调试
将光标移到调试菜单,单击鼠标左键,将会子菜单,再,点击开始调试。

(或者F9快捷键)
便会出现上图的结果.
向dos中输入5(即为N),再按enter键.
之后会出现
局部放大来看:环境:
调用栈:
代码框:
解释如下:
如果出现了蓝色箭头证明,调试已经正式开始了。

计算机已经执行到蓝色背景的这行代码(6)。

3.进入(下一步):
用鼠标左键单击进入或按快捷键F7
蓝色箭头下移一行:
再多按几次F7:
你会发现光标会一直指向将要执行的那一行,在这过程中请注意环境中变量值的变化:
4.跳过:即跳过这一步;(F8)
跳出:即跳出这个函数。

(跳过的内容被不会执行)(shift F7) 5.监视
便会出现:
将光标移到表达式上方,单击鼠标右键。

选择添加监视
在输入框内填写好表达式后,选择确定。

那么监视中会一直显示表达式m的值了。

6.结束调试。

c-free调试程序介绍

c-free调试程序介绍

C-free调试程序介绍调试程序C-Free提供了基本的调试功能,下面结合一个简单的例子,详细介绍C-Free的调试功能。

1设置断点2断点管理3条件断点4开始调试5退出调试6单步进入7下一步8跳出9运行到光标处10环境窗口11察看/修改12监视窗口13内存窗口14察看窗口15控制台窗口1、设置断点假设有如下一段程序:#include <stdio.h>int ComputeValue(int n); //计算1+2+...+n的值void UpperCase(char* str);//将字符串str中的小写字母转换为大写字母int main(int argc, char*argv[]){char szMyStr[] = "C-Free Debug";printf("%d\n",ComputeValue(1000));UpperCase(szMyStr);printf(szMyStr);return 0;}int ComputeValue(int n){int i,s=0;for(i=1; i<=n; i++){s+= i;}return s;}void UpperCase(char*str){char*p= str;while(*p){if(*p>='a'&& *p<='z'){*p= *p- 'a'+ 'A';}p++;}}其中函数ComputeValue的功能是计算1+2+3+……+n的值;函数UpperCase的功能是将字符串中的小写字母全部转换为大写字母。

建议读者将上面这段程序复制到C-Free中,保存成main.c 文件。

①设置断点,最方便快捷的方法是将鼠标移到代码区中某一条代码的左边装订区,然后点击左键,看到红色断点就设置完成。

如下图:图1②设置断点,也可以先将光标点到你想要设置的行,然后点击工具栏上的“设置/取消断点”。

free5gc搭建流程

free5gc搭建流程

free5gc搭建流程
搭建Free5GC的流程通常包括以下几个步骤:
1. 硬件准备,首先,你需要准备一台能够运行Linux操作系统
的计算机或服务器。

确保计算机有足够的内存和处理器性能来运行Free5GC。

2. 环境准备,在开始安装Free5GC之前,你需要安装一些必要
的软件和工具,例如Git、Go语言环境、Docker和Kubernetes等。

3. 下载Free5GC源代码,从Free5GC的官方仓库中获取最新的
源代码。

你可以使用Git工具来克隆Free5GC的仓库到你的计算机上。

4. 编译和安装,按照Free5GC官方文档中提供的指导,你需要
进行编译和安装Free5GC。

这通常涉及使用Go语言工具来编译
Free5GC的各个组件,并将它们安装到你的系统中。

5. 配置和启动,一旦Free5GC的各个组件都安装好了,你需要
按照官方文档中的指导来配置Free5GC。

这包括配置各个组件的参
数、证书和密钥等。

然后,你可以启动Free5GC,开始运行核心网和用户面功能。

6. 测试和调试,在搭建完成后,你可以进行一些测试和调试工作,以确保Free5GC能够正常工作。

这可能涉及到使用一些测试工具来模拟UE(用户设备)和eNodeB(基站)的行为,以验证
Free5GC的功能。

总的来说,搭建Free5GC的流程需要一定的技术和经验,但如果你按照官方文档中的指导来操作,通常应该能够顺利完成搭建工作。

希望这些信息能够帮助你开始搭建Free5GC。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C Free 5.0 程序的单步调试
创建一份新的代码文件
可直接点击“文件”下的白色图标,或点击“文件”选择“新建”,或按快捷键“Ctrl + N”(C Free 5.0默认情况下新建的代码文件为.cpp 格式,可在“工具”、“环境选项”、“新建文件类型”中更改,C语言标准格式为.c 格式)
基于实例的C程序调试介绍
一、查看变量的内容
# include <stdio.h>
int main(int argc, char* argv[])
{
int i;
int sum;
sum=0;
for(i=1;i<=10;i++)
sum=sum+i;
printf("sum=%d",sum);
return 0;
}
第一步,打开C Free 5.0,输入上面的代码。

第二步,把光标移到“sum=0;”这一行,按F10
它的作用是设一个断点,程序运行到这里时,会停下来。

也就是说,接下来,程序必须通过按F7键单步运行了。

第三步:按F9 (开始调试)
我们发现有一箭头停留在这句语句上,它指示程序停留的位置,而箭头所在的语句(“sum=0;”)还没有执行。

事实上,我们可以通过看一下内存变量sum的内容来验证。

方法是这样的:
打开“调试”下的“监视”,或者按快捷键“Alt + 3”。

在“监视”的空白处点击鼠标右键,选择“添加监视”。

输入需要监视的变量名,这里输入为sum
这时我们可以在监视窗口中看到sum的内容不为0,而是一个随机的值。

第四步,我们按一下F7(进入),我们发现sum的内容变为0了。

这说明“sum=0;”这句语句被执行了。

我们还可以用同样的方法看一下i的内容。

只需要鼠标点
第六步,一步一步地按F7,我们可以发现在单步执行for循环语句的时候i和sum的内容在不断变化。

当退出循环时,我们发现i的内容为11(因为变量i的内容为11,i<=10这个条件不满足,所以程序退出循环)。

附带提一下,当程序已经执行了“sum=0;”这一句语句后,如果我们直接把光标移到“printf("sum=%d",sum);”,然后按Ctrl+ F8,我们可以直接把上面的for循环都执行了,而不必一步一步地按F7。

在实践中,为了查找程序的逻辑错误,我们往往要单步运行该程序好几遍。

如果已经通过单步调试验证某一段语句(如一个for循环语句或者几个用户定义的函数)正确了,我们就可以用Ctrl+ F8跳过这段语句,直接运行到还未测试的语句。

二、F7(进入)和F8(跳过)的区别
# include <stdio.h>
int add(int m,int n)
{
int s;
s=m+n;
return s;
}
int main(int argc, char* argv[])
{
int i=1;
int j=2;
int sum;
sum=add(i,j);
printf("sum=%d",sum);
return 0;
}
第一步,把光标移到“sum=add(i,j);”,按F10设置断点后按F9开始调试,此时“sum=add(i,j);”这句语句还没有执行。

接下来,如果按F7,则程序单步执行到int add(int m,int n)的函数体,此时箭头停留的位置如下图所示。

如果按不按F7而按F8,则把int add(int m,int n)内的语句全部执行了(也就是说程序不会单步运行到add函数的里面)
此时箭头停留的位置如下图所示。

也就是说,碰到函数,F7会单步执行函数体的每一句语句,而F8则把函数当作一句普通的C语言语句来执行。

在调试程序的时候,我们可以这样做:如果我们已经通过测试发现某一个函数已经正确,那么我们不必单步执行函数体的每一句语句;否则,我们单步执行函数体的每一句语句,监视相关的变量的内容,通过测试用例检查一下问题出在那里。

三、关于一重指针
我们知道,一个指针是一个变量的地址,是一个常量。

存放一个变量的地址的变量是指针变量。

例如:“int a=1;int m; int *p;p=&a;”说明p是一个指针变量,它的内容为整型变量a的地址。

*p就是p所指向的变量a。

指针变量p指向整型变量a的实质是p存放的是a的地址。

注意:(1)指针和指针变量是两个不同的概念。

(2)在int *p;这里*表示p是一个指针变量;
m=*p;这里*和p结合起来,作为一个整体*p,表示p所指向的变量。

也就是说,这两个*的作用是不一样的。

下面我们通过例子来说明这个问题。

#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int i=1;
int *p=NULL;
int temp;
p=&i;
temp=*p;
printf("temp=%d,i=%d",temp,i);
return 0;
}
为了程序的可靠性,往往要对指针变量赋初值NULL。

第一步,将光标移动到p=&i;按F10设置断点后按F9开始调试
在“监视”窗口中添加i,p,*p,temp。

第二步,将光标移到“printf("temp=%d,i=%d",temp,i);”,按Ctrl + F8 。

这时我们可以在“监视”窗口中发现i的内容为1,*p的内容为1,p的内容为0x28ff44(注意每次调试时,地址可能不一样,因为编译器为变量分配的地址会变的),temp的内容为1。

*p的内容和temp的内容是一样的。

说明:这里0x28ff44是i的地址,另外,系统每次分配给程序的数据段往往不一样,我们在调试程序时,在“监视”窗口中观察到的指针变量p的内容往往不是0x28ff44,这是正常的。

下面两个小节涉及到具体地址的例子也一样。

四、指针作为函数的参数
#include <stdlib.h>
#include <stdio.h>
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
int main(int argc, char* argv[])
{
int i=1;
int j=2;
int *address_i=NULL;
int *address_j=NULL;
address_i=&i;
address_j=&j;
swap(&i,&j);
printf("i=%d,j=%d",i,j);
printf("%d %d",*address_i,*address_j);
return 0;
}
函数swap的作用是交换两个内存变量的值。

第一步,将光标移动到address_i=&i;按F10设置断点后按F9开始调试
在“监视”窗口中添加i,j,address_i,,p,q,*p,*q,temp。

第二步,将光标移到swap(&i,&j);按Ctrl+F8。

这时我们可以发现address_i的内容为0x28ff44(对应&i),address_j的内容为0x28ff40(对应&j)。

第三步,按F7,进入到函数swap的函数体,这时我们发现“监视”窗口中p的内容为0x28ff44(对应&i),q的内容为0x28ff40(对应&j)。

此时,“监视”窗口中address_i,address_j,i,j都出现了“未知”这样的信息,这是因为当前程序执行到了函数swap的函数体,而“监视”窗口中显示的内容为当前正在执行的函数里的变量和表达式。

为此,我们通过观察*p的内容来观察i的内容,通过观察*q的内容来观察j的内容。

(这里涉及到了形参和实参的对应关系,p对应&i,q 对应&j )
第四步按F7执行temp=*p;此时,temp的内容1,如下图所示。

这里指针变量p 放了整型变量i 的地址,所以p 指向i,所谓的指向其实就是一个变量放了另一个变量的地址。

第五步,按F7执行*p=*q;
temp
第六步,按F7执行*q=temp;
这样变量i和变量j的内容交换了。

说明:由于读者执行程序时,得到的相关变量的地址值往往和这个例子中的地址值不一样,建议读者也按照本文的方法,画一画上面的图,能加深对指针的理解。

不管地址怎么变,p的内容和address_i的内容一样,q的内容和address_j的内容一样。

相关文档
最新文档