基本要义.PDFVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本要义.PDF

基本要义 不积跬步,无以至千里。不积小流,无以成江海。 一.调试 调试是编码最基本不过的东西了,在这里,我以一个简单的程序为例,稍微来讲解一下 dev-c++中调试的基本技巧。 我的代码如下,非常简单的一个交换值的程序: #include iostream using namespace std; void exchange(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int main() { int a = 1; int b = 2; exchange(a, b); cout a = a b = b endl; return 0; } 1.断点 所谓断点,指的就是在你debug 的时候,程序运行到你的断点处,会暂时停下来,不 会继续运行。在你的代码中,如果你怀疑你的代码哪里可能出错了,你就可以在那里设置断 点。 -1- 2.watch debug 的话自然是少不了查看变量的值的工具,下面是一个例子,当我真正开始debug 的时候,程序在断点处,也就是蓝色箭头指示的 15行处,暂时停止运行,此时,如果我想 查看变量a 的值的话,我就要对变量添加watch 了,如下图所示。 添加完成后,就可以在左边的框中查看变量的值了。 值得一提的是,变量的值会随之程序的运行发生变化。 3.单步执行与单步进入 如果我想仔细查看端点处代码究竟干了一些什么事情,那么debug 的另一个基本的命 令单步执行我们就必须要知晓了。 这是单步执行之前的状态: -2- 单步执行之后的状态,b 的值发生了变化,指示将要运行的代码的蓝色箭头往下移动了 一步 (这就是所谓的单步)。 与单步执行非常近似的一个概念叫做单步进入,在没有函数调用的时候,单步执行和单 步进入没有什么区别,但是有函数调用的时候区别就来了。 上面的exchange 是一个函数调用。我们就以此为例,看看两者的区别: 单步调试将函数调用看做一条语句,直接跳过,而单步进入会进入函数的内部: -3- 相信你已经掌握了两者的用法了。 4.继续执行 另外一个比较重要的调试命令是上面图中的Continue,这个命令很简单,它代表继续 执行,一直到碰到下一个断点,当然,如果没有断点的话,会直接执行完整个程序。 掌握了上面的几个调试技巧,个人觉得差不多了。 5.Evaluate 这个不算命令啦,顶多算是一个小插曲而已。 看到上面的Evaluate 没有,这里可以显示变量的值。在比如说*a: -4- 其实在Send command to GDB 那里可以输入调试的命令,可是并不推荐,如果感兴 趣,我写过一篇linux 下gdb 调试的总结的文章,当做附录送给你好了。 好了,总结一下吧,程序输出结果不对是经常有的事情,所以程序员大部分的时间里都 在调试,调试的时候,最好拿出一页纸,将你预想的结果和程序实际运行的结果对比一下, 这样你就能很快找到bug 所在的地方。Good luck! 二.常用函数 我并不会讲很多的函数,其余的函数大家可以去查api,这里只会讲一些平时用得特别 多的一些函数的用法。 1.常用的字符函数 strcpy 用于复制字符串 include string.h char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); 用源地址处(src)取出字符串复制到目的地址处(dest),strcpy 函数要求你自己保 证dest 处有足够的空间。而strncpy 多出的一个参数n 用于指示dest 处最大的可用空 间的数目 (单位是字节)。如果src 的字符数多余n 的话,不会全部

文档评论(0)

尐丶丑 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档