【答疑释惑】菜鸟怎么调试简单程序?

首先公布昨天留的课后作业答案的宏定义函数的答案

#define f(a, b, x) a*x+b printf("%d, %dn", f(3,2,1), f(6, 5, f(3, 2, 1)));答案:5,25

最近发现好多小伙伴在群里问大段的程序代码问程序问题出在哪里?

小编针对这种情况专门整理一篇如何调试程序,其实这个问题很简单,

下面讲讲如何使用vc来调试程序,那个简单的例子做示范。

1.认识下调试重要的几个键:

  • F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.
  • F5调试状态运行程序,程序执行到有断点的地方会停下来.
  • F10执行下一句话(不进入函数)step out
  • F11执行(进入函数)step in
  • CTRL+F10运行到光标所在行

F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.

2.单步调试

打开你要调试的代码工程,首先使用F9或者鼠标点击设置想要调试的程序的断点,例如上图。

然后直接F5,程序就会直接运行直到断点处停止。使用快捷键F10进行单步执行调试,每一步可以从下方的窗口实时看变量的值。

如果当前运行到一个函数调用,你可以使用F11(step into)直接运行到函数里面进行调试.

3.使用调试工具栏和调试窗口

调试过程中,如果没有记住快捷键,可以充分利用调试工具栏。

如果想一次查看多个变量的值,可以使用底部的调试窗口,例如:watch窗口里面可以直接添加变量名字查看实时的值。Locals窗口可以查看当前函数中变量的值。

程序调试方法小结 上面仅介绍了程序调试的基本方法。对需要观察其运行过程的程序,可以这样做:

  • 增加必要的断点(当然,嫌疑解除后去除断点);
  • 如果必要,添加监视,以便于观察一些表达式的值;
  • 用Step Into、Step Over、Step Out或Run to Cursor等的组合,跟踪程序执行的过程
  • 在运行过程中,和自己对运行结果的预期结合起来,思考程序可能出现的问题。
  • 需要退出程序时,使用调试菜单中的“Stop Debugging”选项终止执行。这时再修改程序。
  • 如果程序执行异常,一定要告诉自己:程序中一定有bug,不是机器的错,我得找出bug来,Bug也一定会被你找出来。 欢迎小伙伴针对自己用的编译器写篇教程给小伙伴去使用 如果还觉得回答不够彻底就直接加群问小编或者在公众号直接留言

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(五):简易留言簿交互实现

努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

60080
来自专栏大内老A

WCF客户端运行时架构体系详解[下篇]

当基于某个终结点创建的ChannelFactory<TChannel>被开启的之后,位于服务模型层的客户端运行时框架被成功构建。站在编程的角度看ChannelF...

18760
来自专栏Java帮帮-微信公众号-技术文章全总结

SpringBoot中Spring-cache与Redis整合【面试+工作】

也是在整合redis的时候偶然间发现spring-cache的。这也是一个不错的框架,与spring的事务使用类似,只要添加一些注解方法,就可以动态的去操作缓存...

51130
来自专栏ascii0x03的安全笔记

SEED缓冲区溢出实验笔记

缓冲区溢出实验(Linux 32位) 参考教程与材料:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software...

47050
来自专栏崔庆才的专栏

分析Ajax爬取今日头条街拍美图

17740
来自专栏我叫刘半仙

手写一个简化版Tomcat

      Tomcat作为Web服务器深受市场欢迎,有必要对其进行深入的研究。在工作中,我们经常会把写好的代码打包放在Tomcat里并启动,然后在浏览器里就能...

41950
来自专栏JackeyGao的博客

终端操作(SHELL)技巧

本篇是一些小但是有用的终端操作技巧和一些快捷方式,可以让你在 linux 命令行有出奇的效率。一方面这些技巧可以让你的效率有所提高, 但有时候也会有隐患, 所以...

16100
来自专栏程序员八阿哥

王老板Python面试(9):整理的最全 python常见面试题(基本必考)

1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于string、list、dict、tuple等这类容器对象,使用...

23710
来自专栏企鹅号快讯

GoAhead服务器 远程命令执行漏洞 分析报告

安全通告 1 GoAhead Web Server是为嵌入式实时操作系统(RTOS)量身定制的开源Web服务器。很多国际一线大厂商,包括IBM、HP、Oracl...

265100
来自专栏智能算法

Python学习(九)---- python中的线程

原文地址: https://blog.csdn.net/fgf00/article/details/52773459 编辑:智能算法,欢迎关注! 上期我们一起学...

18220

扫码关注云+社区

领取腾讯云代金券