如何用C语言编写计数器

难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。?我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下:VC调试篇设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。为了增加调试信息,可以按照下述步骤进行:打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开)选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息 方式包括:命令行Project settings说明无None没有调试信息/ZdLine Numbers Only目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息/Z7C 7.0- Compatible目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等/ZiProgram Database创建一个程序库(PDB),包括类型信息和符号调试信息。/ZIProgram Database for Edit and Continue除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。调试方法:1、使用 Assert(原则:尽量简单) assert只在debug下生效,release下不会被编译。2、防御性的编程3、使用Trace4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因5、把错误信息记录到文件中?位置断点(Location Breakpoint)?大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码:void CForDebugDlg::OnOK(){??for (int i = 0; i < 1000; i++)?//A??{??int k = i * 10 - 2; //B??SendTo(k);?//C??int tmp = DoSome(i); //D??int j = i / tmp;?//E??}}??执行此函数,程序崩溃于E行,发现此时tmp为0,假设tmp本不应该为0,怎么这个时候为0呢?所以最好能够跟踪此次循环时DoSome函数是如何运行的,但由于是在循环体内,如果在E行设置断点,可能需要按F5(GO)许多次。这样手要不停的按,很痛苦。使用VC6断点修饰条件就可以轻易解决此问题。步骤如下。?1 Ctrl+B打开断点设置框,如下图:Figure 1设置高级位置断点?2 然后选择D行所在的断点,然后点击condition按钮,在弹出对话框的最下面一个编辑框中输入一个很大数目,具体视应用而定,这里1000就够了。?3 按F5重新运行程序,程序中断。Ctrl+B打开断点框,发现此断点后跟随一串说明:...487 times remaining。意思是还剩下487次没有执行,那就是说执行到513(1000-487)次时候出错的。因此,我们按步骤2所讲,更改此断点的skip次数,将1000改为513。?4 再次重新运行程序,程序执行了513次循环,然后自动停在断点处。这时,我们就可以仔细查看DoSome是如何返回0的。这样,你就避免了手指的痛苦,节省了时间。?再看位置断点其他修饰条件。如Figure 1所示,在“Enter the expression to be evaluated:”下面,可以输入一些条件,当这些条件满足时,断点才启动。譬如,刚才的程序,我们需要i为100时程序停下来,我们就可以输入在编辑框中输入“i==100”。?另外,如果在此编辑框中如果只输入变量名称,则变量发生改变时,断点才会启动。这对检测一个变量何时被修改很方便,特别

c语言字符的计数器,如何用C语言编写计数器.docx相关推荐

  1. C语言字符糊到了一起,C语言速成及格课.docx

    C语言速成及格课.docx 目录:1. C语言概要 2.变量 3.计算 4.判断 5.循环 6.函数 7.数组 8.指针 9.字符(串)附录1:学习C语言的方法.附录2:编程的一些技巧.附录3:使用电 ...

  2. c语言字符图形的操作叙述,C语言课程设计--(图形编程_全).doc

    第一讲 C语言图形方式下的编程 学习目标 ?了解PC显示系统的结构 ?C语言图形初始化的一般方法 ?C语言常用的图形处理函数 显示系统简介 PC机显示系统一般是由显示器和显示卡组成.显示器(Monit ...

  3. c语言n阶方阵,如何用C语言编出一个N阶螺旋方阵?

    如何用C语言编出一个N阶螺旋方阵? 來源:互聯網  2009-06-01 10:17:07  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: 例如:1 ...

  4. c语言二进制数以字符形式输出,如何用C语言输出二进制数据

    二进制2113数字不能像小数一样直接输出为%d. 如果要输出5261二进制数printf输出格式 二进制,可以使用函数4102将其转换为二进制字符串,然后在1653中输出. itoa函数 原型: ch ...

  5. c语言字符为0和1,//C语言:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回。...

    //函数fun:将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制数返回. #include #pragma warning (disable:4996) #define N 16 /* ...

  6. c语言字符型数据怎么输入输出,C语言基础之数据类型与输入/输出

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 常用的进位制 R进制数只采用R个基本数字符号,R称为数制的基数,数制中每一固定位置对应的单位值称为权,进位原则是逢R进1 ...

  7. c语言 字符转换成ascii吗,C语言字符转换ASCII码

    //函 数 名:CharToHex() //功能描述:把ASCII字符转换为16进制 //函数说明: //调用函数: //全局变量: //输    入:ASCII字符 //返    回:16进制 / ...

  8. C语言编程快速入门黎明,何用C语言模拟键盘输入?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 static char szUnd[] ="_______ __ ____ _____ ______ ______ ___ _______ __ ...

  9. c语言之多线程函数,如何用C语言实现多线程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Windows操作系统,C语言实现多线程: #include #include DWORD APIENTRY ThreadOne ( LPVOID thr ...

最新文章

  1. PCL点云特征描述与提取(1)
  2. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战
  3. CSS漂亮盒子(上)
  4. awk匹配以aaa开头,以bbb结尾的内容,同时aaa和bbb之间还包含ccc
  5. 2、JDBC连接数据库
  6. mysql中去重的用法_mysql中去重 distinct 用法
  7. XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
  8. Tensorflow学习—— Estimator简介
  9. 递归 求一个数的阶乘
  10. 设计模式学习笔记——命令(Command)模式
  11. 32时间片轮转_【解惑】到底是quot;时间片quot;?还是quot;分时轮询quot;?
  12. dreamweaver 8快捷键
  13. xmlspy xsd生成java_利用XMLSPY根据XSD自动生成XML..doc
  14. Mac怎么玩Windows游戏
  15. 大厂前端面试考什么?
  16. 程序员最常用的6大技术博客排行榜
  17. Hands-on C++ Game Animation Programming阅读笔记(三)
  18. matlab元胞自动机学风演化,土建學院研究生培养方案调研报告.docx
  19. 《统计学》胡宝珠期末复习笔记
  20. ​学会这8个引流获客方法,让你不再缺流量!

热门文章

  1. 高中数学必修2:空间几何体的结构特征及三视图和直观图
  2. 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
  3. 【个人实验报告】博客网站
  4. CSP、CCSP刷题笔记
  5. Python-go-cqhttp原理和代码
  6. 优雅地解决 WSL 开栈问题
  7. HDU7191 Count Set 解题报告
  8. Matlab 振动加速度 对应的振动频率,由振动加速度进行频域二次积分求振动位移...
  9. 诺基亚2018换鸿蒙,2018年最后一次换机机会,诺基亚、小米、一加这几款机型不容错过...
  10. 计算机屏幕截图怎么操作,电脑屏幕截图怎么弄?