C程序调试步骤to初学者

合集下载

C如何调试代码

C如何调试代码

我们在做程序开发时,难免会遇到错误异常。

如何快速地找到出错的地方、分析错误的原因以及找到解决问题的方案,是许多初级程序员困扰的问题,这也正是经验的宝贵之处。

下面我将简单介绍在Visual Studio中调试以及一些高级的调试和常见的错误。

PS:如无特别说明Visual Studio均指Dev10即Visual Studio 2010。

入门篇假设你是有着.Net平台的程序员,并且使用Visual Studio 做为开发工具。

断点:最简单的一种,设置一个断点,程序执行到那一句就自动中断进入调试状态。

设置断点,在你觉得有问题的代码行,左侧单击,会出现红色的红点即断点。

启动调式:按F5,或者菜单栏---调式---开始调试,或者工具栏的图标快速监视:快速查看变量或者表达式的值,也可以自定义表达式进行计算单步执行有三种,一种是每次执行一行(F10);一种是每次执行一行,但遇到函数调用就会跳到被调用的函数里(F11);一种是直接执行当前函数里剩下的指令,返回上一级函数(Shift+F11)。

还有一种后悔药,设为下一句(Set Next Statement),即下一句会被执行的语句(右击设置或者快捷键:Ctrl+Shift+F10),但要注意在调试与数据有关的时候,设置下一句有可能会报异常。

如在调试向DataTable中添加行的时候,已经存在的行不能重复被添加到DataTable中监视调试器可能会自动列出一些相关变量的值,但是你可能还关心其它变量的值,可以添加对这些变量的监视。

还可以监视一个表达式的值,比如a+b。

但是,这个表达式最好不要修改变量的值,比如监视a++都会导致监视时修改了a的值,影响了程序的运行结果。

调试技巧篇使用快捷键会大大提升我们的调试效率,常用的调试快捷键:F5 启动调试F10 执行下一行代码,但不执行任何函数调用。

F11 在执行进入函数调用后,逐条语句执行代码。

Shift + F11 执行当前执行点所处函数的剩余行。

VC调试程序步骤

VC调试程序步骤

10
单击, 单击,关闭对话框 单击, 单击,取消对勾
下次启动VC++,就不会再出现“Tip of the Day”对话框 ,就不会再出现“ 下次启动 对话框
4
启动VC新建 新建C语言源文件步骤 启动 新建 语言源文件步骤
步骤1 步骤1 新建一个文本文件( 新建一个文本文件(.txt) ) 步骤2 步骤2 将文本文件另存为C文件( 将文本文件另存为 文件(.c) 文件 步骤3 步骤3 编辑C文件, 编辑 文件,并保存 文件
步骤2 步骤2 启动界面关闭“ 在VC启动界面关闭“Tip of the Day”对话框 启动界面关闭 对话框
2
启动VC++演示 演示 启动 Microsoft Visual Studio 6.0 -> Microsoft Visual C++ 6.0
3
启动窗口中, 在VC启动窗口中,取消“Tip of the Day” 启动窗口中 取消“
准备工作 为更好管理C语言程序, 为更好管理 语言程序,在指定盘下建立好文 语言程序 件夹。每个 文件保存在不同文件夹下 文件保存在不同文件夹下。 件夹。每个C文件保存在不同文件夹下。 例如: 例如:建立如下结构的文件夹 程序1 程序 C程序 程序 程序2 程序
1
启动VC++ 启动 步骤1 步骤1 Microsoft Visual Studio 6.0 -> Microsoft Visual C++ 6.0
新建工作空间窗口, 新建工作空间窗口,主 要负责组织源文件 运行窗口 单击该按钮, 单击编译按钮,编译 单击该按钮,完成程序 单击编译按钮, 连接没有错误, 连接没有错误,单 的连接操作。 的连接操作。也可以直 当前C源文件 当前 击!按钮运行可执 源文件 接单击运行按钮! 接单击运行按钮!,将 行程序 两步操作合为一步完成 输入2,再输入回 函数停 输入 如果出现错误,滚动信息窗口, , 如果出现错误,滚动信息窗口, 程序执行到scanf函数停 程序执行到 车下,等待用户从键盘上 ,程序继续运 程序运行结束, 程序运行结束, 找到第一条发生错误的地方并双 编译结果 出现一个箭头指出错误 修改错误再编译直 行 输出结果。 输出结果 为当前的应用建立一个新 击 连接后的结果。按任 输入一个值按回车再继 所在语句; 环境 所在语句;检查当前语 到没有错误为止 意键返回VC环境 意键返回 续执行 工作区 句或之上的语句

c语言程序调试的方法

c语言程序调试的方法

c语言程序调试的方法C语言是一种广泛应用的编程语言,但是在写程序的过程中难免会遇到各种错误和bug。

为了解决这些问题,程序调试是必不可少的环节。

本文将一步一步介绍C语言程序调试的方法,帮助读者更好地定位和修复错误。

一、理解程序调试概念及重要性(100-200字)程序调试是指通过识别、定位和修复软件中的错误(也称为缺陷或bug)来确保程序的正确运行。

调试是开发过程中的重要环节,它不仅可以解决已知的错误,还可以帮助我们理解代码和程序的执行过程。

在大型项目中,调试能够提高开发效率,降低错误的出现频率。

二、确定调试目标(200-300字)在开始调试之前,我们首先需要明确调试的目标是什么。

这有助于我们有条不紊地进行调试,并有效地利用时间。

调试目标可以是识别特定的错误、改进程序的性能或验证代码行为的正确性。

确定了调试目标后,我们就可以有针对性地采取相应的调试方法来达到目标。

三、检查代码和数据(200-300字)一旦我们明确了调试目标,下一步是检查代码和数据。

这个过程主要包括以下几个方面:1. 语法检查:通过编译器进行语法检查可以找到一些常见的语法错误,如括号不匹配、缺失分号等。

2. 变量和常量检查:检查变量和常量的命名是否规范、是否被正确初始化和赋值。

同时也要注意无效的内存引用、数组溢出等问题。

3. 函数调用:检查函数调用是否正确、参数是否传递正确,以及返回值是否被正确处理。

4. 数据流分析:通过追踪代码的执行过程,观察数据在程序中的流动,找出可能的错误。

通过仔细检查代码和数据,我们可以尽早发现问题,提高调试的效率。

四、使用调试工具(300-400字)在调试过程中,我们可以使用一些专门的调试工具来帮助我们定位和解决问题。

常用的调试工具有:1. 编译器提供的调试信息:在编译时,可以通过开启调试信息选项来生成包含调试信息的可执行文件。

在调试过程中,我们可以使用调试器来查看代码的执行过程、变量的值以及函数的调用关系,帮助我们定位问题所在。

简述调试c程序的基本步骤

简述调试c程序的基本步骤

简述调试c程序的基本步骤调试C程序的基本步骤调试是软件开发过程中非常重要的一环,它有助于发现和解决程序中的错误,确保程序的正确性和稳定性。

本文将简要介绍调试C程序的基本步骤。

1. 理解程序的逻辑在开始调试之前,首先要对程序的逻辑进行充分理解。

了解程序的预期功能、输入输出以及各个模块之间的关系,有助于更好地定位问题。

2. 编译程序时开启调试模式在编译C程序时,可以通过添加调试选项来开启调试模式,以便在运行时能够获取更多的调试信息。

一般可以使用-G选项来开启调试模式,例如:```gcc -g main.c -o program```3. 使用调试工具调试工具是调试C程序的重要辅助手段。

常见的调试工具包括GDB (GNU调试器)和LLDB(LLVM调试器)。

这些工具提供了一系列命令和功能,可以帮助我们跟踪程序的执行过程、查看变量的值、设置断点等。

4. 设置断点断点是调试程序时经常使用的功能,它能够在程序执行到指定位置时暂停程序的执行。

通过设置断点,我们可以逐步调试程序,查看每一步的执行情况。

在GDB中,可以使用break命令来设置断点,例如:```break main.c:10```这样就在main.c文件的第10行设置了一个断点。

5. 执行程序在设置好断点后,可以执行程序并观察程序的执行情况。

当程序执行到断点处时,会暂停执行并进入调试模式,此时可以使用调试工具提供的命令来查看程序的状态。

6. 查看变量的值在调试过程中,经常需要查看变量的值来判断程序的执行情况。

调试工具可以提供命令来查看变量的值,例如在GDB中,可以使用print命令来查看变量的值,例如:```print x```这样就可以查看变量x的值。

7. 单步执行程序单步执行是调试程序时常用的功能之一,它可以逐行地执行程序,并观察每一行的执行情况。

在GDB中,可以使用next命令来进行单步执行,例如:```next```这样就会执行下一行的代码。

C编程的调试技巧

C编程的调试技巧

/* include file */ #include "defs.h" #include "oaks8lib.h"
/* define common symbol
*/
/* for function to deal with OAKS8-LCDBoard peripheral */
/* define function prototype */
****************************************************************************
* History :
*""FILE COMMENT END""*******************************************************/
➢ 单步执行是最重要的调试手段!
#include <iostream.h>
int main()
{
char type = s;
static void print_dec(unsigned char *message, int dec);
/* display decimal number in LCD */
/*""FUNC COMMENT""*************************************************************
结 论1
➢ 永远不要写过长的语句,应该让代码尽可 能简单;永远不要把两条语句写在一行中, 以便于调试。
#include <iostream.h>
void main()

C语言程序调试技巧

C语言程序调试技巧

C语言程序调试技巧在软件开发过程中,调试是一项非常重要的任务。

调试能够帮助开发人员识别和修复程序中的错误,确保程序在运行时能够正常工作。

对于C语言程序而言,调试技巧是必不可少的。

本文将介绍一些常用的C语言程序调试技巧,以帮助开发人员更高效地进行程序调试。

一、了解编译器的调试选项在开始调试之前,了解所使用的编译器的调试选项是很重要的。

不同的编译器可能会有不同的调试选项,这些选项可以帮助开发人员在编译过程中生成额外的调试信息,以便更好地进行调试。

例如,在使用gcc编译器时,可以使用“-g”选项来生成用于调试的符号表。

因此,熟悉编译器的调试选项,可以为后续的调试工作提供更多的信息和便利。

二、使用断点断点是调试中一种非常常用的技术。

在程序执行到断点处时,程序会暂停执行,开发人员可以在此时检查变量的值、观察程序的执行流程等。

在C语言中,通过在代码中插入断点可以实现这一功能。

通常,调试器会提供一种特殊的语法来标记断点的位置,开发人员可以根据需要在代码中插入断点。

当程序运行到断点处时,调试器会通知开发人员并提供相关的调试信息。

三、打印调试信息在调试C语言程序时,打印调试信息是一种简单有效的调试技巧。

通过在关键位置插入打印语句,可以观察程序在运行过程中的状态、变量的值等信息。

在C语言中,可以通过调用printf函数来实现打印功能。

在打印调试信息时,可以将关键变量的值打印出来,以便开发人员更好地理解程序的执行情况。

不过在使用打印调试信息时,需要注意避免过多的打印语句,以免对程序的性能造成不必要的影响。

四、使用调试工具除了断点和打印调试信息外,还有一些专业的调试工具可以帮助开发人员更好地进行C语言程序的调试。

这些调试工具通常提供了更丰富的调试功能,例如内存监视、变量查看、代码跟踪等。

常见的C语言调试工具包括GDB、Visual Studio等。

这些工具结合了调试器和IDE的功能,可以帮助开发人员更全面地进行程序调试和错误排查。

c语言调试的步骤 -回复

c语言调试的步骤 -回复

c语言调试的步骤-回复C语言调试的步骤在开发和编写C语言代码时,编程错误是难以避免的。

这些错误可能导致程序崩溃、输出错误结果或者无法实现预期的功能。

为了排除这些错误并保证程序的正确性,开发人员需要进行调试。

调试是一种通过检查、识别和纠正代码错误来验证和修复程序的过程。

本文将向您介绍C语言调试的步骤,以帮助您提高程序开发和调试的效率和准确性。

1. 编程工具的选择选择适当的编程工具是进行C语言调试的第一步。

常用的C语言调试工具有GDB、LLDB和Visual Studio等。

这些工具提供了查看变量值、设置断点、单步执行代码等常用的调试功能,能够帮助开发人员更好地理解代码的运行状况。

2. 编译选项的设置在进行C语言调试时,应选择适当的编译选项来生成可调试的程序。

通常,我们需要开启调试模式(debug mode)并包含符号信息(symbol information)。

调试模式会在编译过程中生成额外的调试信息,而符号信息则可以帮助调试工具在调试时定位到具体的源代码行。

3. 断点设置断点是调试过程中的关键工具,它允许开发人员在程序中指定一个停止的位置,并在到达该位置时暂停程序的执行。

断点的设置可以帮助开发人员查看程序在特定情况下的状态和值,并检查变量值、跟踪代码流程等。

通过观察和分析断点处的变量值和代码执行情况,可以找到代码中潜在的错误。

4. 单步执行单步执行是一种调试技术,它允许我们逐行执行程序。

开发人员可以逐步跟踪程序的执行流程,并在每一步中检查变量的值和代码的执行情况。

常见的单步执行方式有单步进入(step into)、单步过(step over)和单步出(step out)。

单步进入(step into)是指在遇到函数调用时进入该函数并逐行执行。

该方法适用于我们希望深入了解函数内部细节的场景。

单步过(step over)是指遇到函数调用时,不进入函数内部,而是直接跳过该函数的执行。

这种方法适用于我们对函数的实现没有特别关注的情况。

C语言技术的调试技巧

C语言技术的调试技巧

C语言技术的调试技巧在软件开发过程中,调试是一个非常重要的环节。

无论是初学者还是经验丰富的开发者,都会遇到各种各样的bug和问题。

而学会有效地调试代码,能够快速定位和解决问题,是每个程序员都应该掌握的技能之一。

本文将介绍一些C语言技术的调试技巧,帮助读者更高效地进行代码调试。

1. 使用调试器调试器是一个非常有用的工具,它可以帮助我们逐行执行代码,并在执行过程中查看变量的值。

通过调试器,我们可以更加直观地了解程序的执行过程,找到问题所在。

在C语言中,常用的调试器有GDB(GNU调试器)和LLDB(LLVM调试器)。

使用调试器时,可以设置断点,单步执行代码,查看变量的值以及调用栈等信息,从而更好地理解代码的执行情况。

2. 添加日志输出日志输出是一种常用的调试技巧,它可以帮助我们了解程序的执行流程和变量的值。

通过在代码中添加适当的日志输出语句,可以在程序执行过程中输出相关信息。

在C语言中,可以使用printf函数来输出日志信息。

通过观察日志输出,我们可以判断代码是否按照预期执行,以及变量的值是否正确。

3. 分而治之当遇到复杂的bug时,可以采用分而治之的策略来解决问题。

将代码分成多个模块,逐个调试,可以更快地定位问题所在。

首先,可以检查代码中的语法错误和逻辑错误,确保代码的正确性。

然后,可以逐个模块调试,验证每个模块的功能是否正常。

通过逐步排除,可以更快地定位问题所在,并减少调试的时间和精力。

4. 使用断言断言是一种常用的调试技巧,它可以帮助我们验证代码中的假设条件是否满足。

在C语言中,可以使用assert宏来添加断言。

当断言条件为假时,程序会中断执行,并输出错误信息。

通过使用断言,可以快速发现并解决代码中的问题,提高程序的稳定性和可靠性。

5. 参考文档和资料在调试过程中,参考相关的文档和资料是非常重要的。

C语言有丰富的文档和资料可供参考,包括语言规范、库函数手册等。

通过仔细阅读文档和资料,可以更好地理解C语言的特性和用法,从而更好地调试代码。

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

调试程序一般应经过以下几个步骤:
1、先进行人工检查,即静态检查。

在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。

这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。

而这一步骤往往容易被人忽视。

有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。

为了更有效地进行人工检查,所编的程序应注意力求做到以下几点:
(1)应当采用结构化程序方法编程,以增加可读性;(2)尽可能多加注释,以帮助理解每段程序的作用;(3)在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。

这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。

2、在人工检查无误后,才可以上机调试。

通过上机发现错误称动态检查。

在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。

应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。

有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。

如果系统提示的出错信息多,应当从上到下一一改正。

有时显示出一大片出错信息往往使人感到问题严重,无从下手。

其实可能只有一二个错误。

例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息;有的是少了“}”或多了“}”有的是书写语句时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“};”就所有错误都消除了。

3、在改正语法错误后,程序经过连接就得到可执行的目标程序。

运行程序,输入程序所需数据,就可得到运行结果。

应当对运行结果作分析,看它是否符合要求。

有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。

有时,数据比较复杂,难以立即判断结果是否正确。

可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。

可以在计算的输出结果的程序地方加入一段输出到屏幕窗口的程序,利用屏幕窗口可以方便看到结果的,很直观。

例如,if语句有两个分支,有可能在流程经过其中一个分支时结果正确,而经过其它一个分支时结果不对等。

必须考虑周全。

事实上,当程序复杂时很难把所有的可能方案全部都试到,选择典型的情况作试验即可。

4、运行结果不对,大多属于逻辑错误。

对这类错误往往需要仔细检查和分析才能发现。

可以采用以下办法:
(1)将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。

例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。

(2)如果实在找不到错误,可以采用“分段检查”的方法。

在程序不同的位置设几个printf 函数语句,输出有关变量的值,往下检查。

直到找到在哪一段中数据不对为止。

这时就已经把错误局限在这一段中了。

不断减小“查错区”,就可能发现错误所在。

(3)也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。

当调试完毕,这些语句不要再编译了,也不再被执行了)。

这种方法可以不必一一去printf函数语句,以提高效率。

5、如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题,如有则改正
之,接着修改程序。

6、系统还提供debug(调试)工具,跟踪代码并给出相应信息,使用更为方便。

要先对源程序进行编译后没有错误才可以按主菜单上的调试按钮,进行调试。

F10为子程序运行式的单步、F11为单步调试;具体使用可以看开发环境使用手册。

总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于累积经验。

在程序调试过程中往往反映出一个人的水平,经验和科学态度。

希望读者能给以足够的重视。

上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,不要一直依赖系统和老师来解决,要学会自己找问题,这样慢慢自己就会写出错误较少的实用的程序。

相关文档
最新文档