精华内容
下载资源
问答
  • 大数据文摘出品作者:蒋宝尚Yelp最近又火了一把,基于一次失败...这家全球最大美食点评公司最近忽然挂了,并且持续了一段时间。而其崩溃的原因2天前因为新版本的上线水落石出,Yelp似乎训练了一个神经网络来debug,...

    bb

    大数据文摘出品

    作者:蒋宝尚

    Yelp最近又火了一把,基于一次失败的“被删库”体验。

    这家全球最大美食点评公司最近忽然挂了,并且持续了一段时间。而其崩溃的原因2天前因为新版本的上线水落石出,Yelp似乎训练了一个神经网络来debug,然后这个具有“极度智能”工具,把数据库中所有的数据都删了。

    bb

    为此,Yelp 在APP store中向近期可能感到体验不畅的各位用户致歉,更新中的说明表示,为了解决此问题,他们将不得不进行回滚(Roll back)。但是也并不是没有好的一面,至少,可以保证系统中100%没有了Bug。

    这个更新说明意味着 Yelp应用最近的更新重点为去除各种漏洞、程序缺陷和改善应用功能,或许是由于程序故障排查已经成为一个常规工作,因而Yelp计划训练一套神经网络来进行程序故障的自动排查,但却意外发生了删除所有数据的事故。

    尽管Yelp程序员们事后这种轻松的语气非常吸粉,更多具体细节还不得而知,但是八卦的网友们还是脑补了一系列事件背后的故事。

    名字为互联网八卦民工的用户说道:

    这不是一个简单的Rollback,Yelp在真实环境训练自己的人工智能神经网络去删除app中的bug,结果是人工智能把所有的都东西都删了,所以只能Rollback了。(Rollback指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为)官方自嘲说现在真的100%没有bug了。(回滚对程序员意味着非常严重的失误。)

    通俗的讲,Yelp出现这种事情,杀一个程序员用来祭天肯定跑不了了。

    bb

    至于,这个工具为什么会做出如此判断?或许用户名为狸角兽和-韩耿耿-的小伙伴道出了这个“人工智能的心声”:

    Al:我不是针对谁我是说在坐的各位都是垃圾

    bbbb

    不管怎么说,这次的事情,不光给Yelp了一个教训,也给了我们一个教训:利用AI帮忙可以,一定要做好风险控制,并且,人工智能距离自编程还很远。

    Yelp是美国著名商户点评网站,创立于2004年,囊括各地餐馆、购物中心、酒店、旅游等领域的商户,用户可以在Yelp网站中给商户打分,提交评论,交流购物体验等。在Yelp 中搜索一个餐厅或者旅馆,能看到它的简要介绍以及网友的点论,点评者还会给出多少星级的评价。2018年12月,世界品牌实验室发布《2018世界品牌500强》榜单,Yelp排名第417。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31562039/viewspace-2563009/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31562039/viewspace-2563009/

    展开全文
  • 之前还写过篇关于代码编写阶段的文章《提高工作效率的工具“类”》,下面我就主要从代码debug的角度谈谈我的看法。尽量写代码时避免bug,减少调试对于任何问题,先以预防为主。在团队中常常可以遇见这样的同事,...

    以我的观点来看:做出一个业务功能是件很简单的事,做好则有难度,高效的做好则是难上加难。抛开前期的架构设计、技术方案的制定不谈,单单是写好代码这一阶段就给我们每个人带来了不同程度的挑战。之前还写过一篇关于代码编写阶段的文章《提高工作效率的工具“类”》,下面我就主要从代码debug的角度来谈谈我的看法。


    • 尽量写代码时避免bug,减少调试
      对于任何问题,先以预防为主。在团队中常常可以遇见这样的同事,代码写的非常快,可是天马行空的代码之后却让自己陷入了无尽debug的沼泽。我会给这样的同事建议:多花点时间做好代码结构的设计,写代码时经常进行review,另外就是老生常谈的细心。

    • 利用好IDE和工具
      常常听到这样的看法,用vim,emacs的看不起用IDE的,觉得vim..就是银弹,不管什么语言,什么平台只要你问他什么IDE最好,他一定回答你vim..。当然不排除有能把vim..用的出神入化的人,其他的大多数是在装X吧。你要记住,你的目标是完成工作,不是显示自己多高端,多牛X。gdb同理。合适的IDE有很多好处:错误提示、代码补全、丰富的替换查找、各种关联跳转,当然如果你不嫌麻烦,不怕不准确也可以对vim进行配置来实现相同的效果,但请先看看这篇文章再做决定《编辑器与IDE》,以上几个IDE带来的好处不正好对我们上面提的“尽量避免bug”有很正面的意义嘛。另外,IDE集成的debug界面友好也强大(用过gdb的朋友肯定知道),断点,step over,step into,内存变量,调用堆栈...简直就是debug神器,至少我写程序读程序的标准步骤就是依靠这几步。(说点夸张的,但是我还确实遇到了不少人包括一些很多年工作经验的工程师竟然从没有用过断点调试,完全靠着printf行走江湖,我的“惊讶”如滔滔江水啊...),在调试中其他工具的使用也可以使debug事半功倍,比如内存泄露的检测工具,还有进行网络编程时的各种工具(wirshark,netcat,tcpdump...)

    • 程序输出日志
      我认为日志系统也应该是一个程序的标准组成部分。其最大用处就是帮助我们来梳理程序行为,准确定位bug。有些朋友要问了,我可以用IDE来调试观察啊,问题是很多bug并不是在你写代码测试时发现的,是在发布之后的用户那里,傻眼了吧?还有很重要的一点,多线程问题、还有一些依赖于具体系统环境或时间环境的问题是很难复现的,这次抓不住你就等着一直提心吊胆吧。我在工作中一直使用Apache的log4X系列,又一个强大的神器。但在有些环境下用不了log4X,比如在有些对程序所占空间大小很敏感的的嵌入式环境(log4cxx的动态库较大),你完全可以自己利用标准输出封装相应的日志系统,然后运行时做好定向输出工作就好。

    • 崩溃转储
      崩溃这种fatal级的大bug最让我们头疼,在C/C++中十有八九是内存违例(段错误)造成的。这种bug和多线程问题一样也是最难找的,所以我们一定要尽可能的准确定位抓住它,最有效的办法就是利用内存转储文件。在linux平台下开启这个选项后利用gdb core就可以进行定位分析。windows平台下较麻烦,得自己实现内存转储功能,推荐大家一个工具类mini_dump,一旦程序崩溃就会产生dump文件,之后使用windbg调试即可。

    • google
      很多bug自己想了各种办法也定位不了或者无法fix,这时你就得请教google大神了。尽量别用百度,如果中文搜索条目很少或没有,换成英文搜索,也许会有更多的收获。


    • 我给我的团队成员提了这么一个建议:如果一个问题你自己尝试了,也google了,但是无法解决。一旦超过一个小时耗在这个问题上请大胆的寻求外部帮助吧,问团队中经验较丰富的成员,也许他曾经遇到过,也许他会给你提供好的建议或者思路。

    • 深入学习
      其实这点排在最前面比较合适,先去深入学习再去做相应的工作。但是我们实际工作中恰恰相反,往往是遇到了问题再去深入学习,我觉得很多bug的形成是我们对知识的一知半解甚至一无所知造成的,我们要尽量抛弃那种临时抱佛脚式的学习,而是要在自己的职业生涯中持续不断学习,深入学习。

    以上就是我对提高debug能力的一些看法和实践。


    展开全文
  • 次艰难debug的反思

    2018-07-03 20:58:00
    已经很久没有遇到如此顽固的bug了,总共耗费了我近1个礼拜的时间。期间的种种冲突,个人崩溃,...正因为基础薄弱,所以debug到某个阶段,竟然不知道该如何制定探索方案。 从调式的方式讲,面对这样顽固的bug,...

     

    已经很久没有遇到如此顽固的bug了,总共耗费了我近1个礼拜的时间。期间的种种冲突,个人崩溃,最终解决方案的形成,到回过头来的反思,实在有太多值得梳理的东西。

    从结果上来讲,这是个人js基础极端薄弱的集中体现,是对js闭包、基本流程和运转方式掌握不到位的综合反应。正因为基础薄弱,所以debug到某个阶段,竟然不知道该如何制定探索方案。

    从调式的方式来讲,面对这样顽固的bug,我并没有做到冷静分析、科学梳理。在跨过某一个节点后,我可耻地又成为了newbie时期的模样:对一切都持神秘的态度。不过是因为别人提了一句,这个系统有点混乱。自己似乎一下子就找到了什么光明正大的理由,就可以把所有的责任推卸出去,可以不用、不必去把问题找出来。

    这种黑盒态度,等同于封建迷信,似乎要凭借什么不可告人的运势、辛苦和神秘,才能够将一个问题解决。这是我所厌恶的,但却依旧不断再犯的东西。从信念上讲,我再一次将问题划归为了“不可知”,于是,整个形势就陡然发生了巨变。因为你将一个问题判定为了“不可知”,你允许了侥幸心理的存在。因为你的侥幸心理,你对一切就不再保持一颗空灵之心,不再相信逻辑、相信理智。

    所谓的将理智抛诸脑后,就是开始颠倒黑白、指鹿为马。

    • 你在过往经历中能找到某个类似bug的解决方案,不是因为你做了很多的无用功,而是因为你在这种低效的搜索中,恰好碰到了解决方案。所以这里的秘诀不是做无用功,而是枚举法、网格搜索法,不断地低效穷举。而如果你能够以更优的策略做搜寻,一定是可以更快地解决bug。

    • 总是用苦力和莫名其妙的怪异方法做比对,只会让自己徒劳耗费精力。但内心却总是有一种情感上的寄托,似乎历尽艰难,就能有回报。所以这是非理性的第二点:不是精准地找到是什么东西、核心策略导致你有回报、有成功,而是诉诸于“苦难情节”。

    • 越是找不到方法,就越是陷进去,开始不思考、不用谋略去制定测试和探索方案。像一只苍蝇一样乱撞。更可怕的是,自己越是这样,就越是深深不可自拔,不知道如何停下来,徒劳地耗费时间。

    • 再往后更可怕的是什么呢,开始像学生时代做不出数学竞赛题目时,思绪胡乱遨游,开始诉诸于命运、劫难、劫数等玄幻的封建迷信。似乎终有此劫无法逃避。可实际呢?一个技术问题解决不了和劫数有什么关系?无非是技术基本功不扎实,学的东西不到位,掌握的东西不细致。可自己早已脱离了理性,开始在“不可知”的世界里越走越起劲儿。

    伴随着非理性的,是自己抗压力的严重失衡。在高压之下,自己无法理性思考问题,无法合理地、系统性、有条理地制定自己的探索方案。面对一个bug,特别是一个神奇现象的bug,你能做的应该是不断地通过“不同种类”的测试,来将可能出现问题的范围缩小。这个时候,最重要的就是精心制定合理的测试方案。

    没有条理、没有理性的探索方式,就会导致制定出N个只会得出相同结论的test case。那么请问,这样的方案有何意义?如果你已经在某个方向上做了测试,那么你至少应该让问题的范围缩小一半,即是二分。而如果你的测试用例连这么基本的标准都无法达到,请问,你制定出来的探索方案还合理吗?

    再来,当你感觉到“应该”要用测试用例缩小问题的定位范围,而“实际”感觉困难或者不能时,你就应该果断地停下来细细思考,而不是闷头继续写一堆、执行一堆毫无用处的测试方案。你该从头到尾去梳理一遍,自己做过哪些测试,它们意味着什么,但同时又不意味着什么。关键就是要想清楚它们“不意味”着什么,才能发现还有哪些地方和模糊点尚待测试。这是关节处。

    所谓工程师,最重要的就是要能够把问题、把过程梳理得透彻,能够明察秋毫。什么叫明察秋毫?就是连羽毛、头发丝那样的细节、差别都可以发现。工程师的部署,应该让每一粒尘埃都有的放矢。那么,一个大前提便是,你至少要能够把每一粒尘埃都装进自己的脑海里做到心中有数。如果你只能够觉察到某一部分的尘埃,那有怎么去谈论让每一粒尘该都有的放矢呢?

    科学、工程的世界里,不允许有模糊不清的地方。你可以不知道,但你不能够把“不知道”当作知道,更不可以把“不知道”归因于各种莫名其妙的“不可知”黑盒。工程师的任务,首先要能够明确地察觉出、理清楚哪些是清楚的、哪些是不清楚的。基于这个认识,再理性地制定攻克方案,而不是蛮干、更不是寄托于“神谕”或者“祈祷”,期望通过侥幸使自己的方案发挥效果。

    这次经历,唯一值得称道、也是我解决这个bug的重要因素,便是我没有闭门造车,而是以开放的心态诚恳地向周围的朋友求助。在与他们的谈话中、建议下,自己不断获得启发,从而能够将这个bug解决。终于,在只求“解决问题”这个方面,自己更为激进一些了。

    感谢向我提供帮助的这些朋友们,有你们真好。

     

     

     

     

    近期回顾

    J2EE导论 | 疑惑篇
    前端技术的碎碎念
    放眼望去都是痛

     

     

    如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!

     

       

    更多信息交流和观点分享,可加入知识星球:

     

     

    VIP赞赏专区:


    转载于:https://www.cnblogs.com/kid551/p/9260586.html

    展开全文
  • linux debug

    2014-02-28 14:39:26
    ...少废话,coding 最重要的是如何debugdebug ...当然就少不了把程序信息输出,如何清晰明了地打印出程序信息,可以快速判断程序运行情况,定位程序...先来一段代码实战下再说:   #include stdio.h> #inc

    原来的网址:http://blog.chinaunix.net/uid-20671208-id-3013780.html



    少废话,coding 最重要的是如何debugdebug 当然就少不了把程序信息输出,如何清晰明了地打印出程序信息,可以快速判断程序运行情况,定位程序出问题的地方。先来一段代码实战下再说:

     

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <errno.h>

    4. #ifndef __USE_DEBUG
    5. #define __USE_DEBUG

    6. #define USE_DEBUG
    7. #ifdef USE_DEBUG
    8. #define DEBUG_LINE() printf("[%s:%s] line=%d\r\n",__FILE__, __func__, __LINE__)
    9. #define DEBUG_ERR(fmt, args...) printf("\033[46;31m[%s:%d]\033[0m "#fmt" errno=%d, %m\r\n", __func__, __LINE__, ##args, errno, errno)
    10. #define DEBUG_INFO(fmt, args...) printf("\033[33m[%s:%d]\033[0m "#fmt"\r\n", __func__, __LINE__, ##args)
    11. #else
    12. #define DEBUG_LINE()
    13. #define DEBUG_ERR(fmt, ...)
    14. #define DEBUG_INFO(fmt, ...)
    15. #endif

    16. #endif

    17. void func()
    18. {
    19.         DEBUG_LINE();
    20.         DEBUG_INFO("Garfield test DEBUG_INFO() d: %d ; s: %s", 1 , __FUNCTION__);
    21.         DEBUG_ERR("Garfield test DEBUG_ERR() d: %d ; s: %s", 2 , __FUNCTION__);
    22. }

    23. int main(int argc,char **argv)
    24. {
    25.         func();

    26.         return 0;
    27. }

    分析:

    1,  使用颜色打印调试信息:

     

    1. printf("\033[46;31m[%s:%d]\033[0m "#fmt" errno=%d, %m\r\n", __func__, __LINE__, ##args, errno, errno);

    上面printf时在Linux 命令行下打印出带颜色的字体,方便一眼区分不同种类的调试信息,只需要加上一些颜色代码,例如:这里的46代表底色, 31代表字体的颜色。

    使用ascii code 是对颜色调用的始末格式如下:

     

    1. \033[ ; m …… \033[0m

    后面哪个 ”\033[0m” 是对前面哪个颜色载入的结束,恢复到终端原来的背景色和字体色,可以把后面哪个修改成如下试试:

     

    1. #define DEBUG_ERR(fmt, args...) printf("\033[46;31m[%s:%d]\033[40;37m "#fmt" errno=%d, %m\r\n", __func__, __LINE__, ##args, errno, errno);

    下面列出 ascii code 的颜色值:

        字背景颜色范围:40----49                            字颜色:30-----------39

             40:                                                             30:

             41:深红                                                         31:

             42:绿                                                             32:绿

             43:黄色                                                         33:

             44:蓝色                                                         34:蓝色

             45:紫色                                                         35:紫色

             46:深绿                                                         36:深绿

             47:白色                                                         37:白色

     

    2,   打印调试信息的跟踪位置:

     

    1. printf("[%s:%s] line=%d\r\n",__FILE__, __func__, __LINE__);
    2. printf("\033[33m[%s:%d]\033[0m "#fmt"\r\n", __func__, __LINE__, ##args);

             如上代码:

    1__FILE__ 打印出调试信息所在的文件名;

    2__func__ 将会打印出调试信息所在的函数名;

    3__LINE__ 将会打印出调试信息所在文件的行号;

     

    3,   使用不定参数向打印信息里面加入自己想看到的调试信息:

     

    1. #define DEBUG_INFO(fmt, args...) printf("\033[33m[%s:%d]\033[0m "#fmt"\r\n", __func__, __LINE__, ##args);

        调用方式如下:

     

    1. int i = 110;
    2. char * s = “hello world!”;
    3. DEBUG_INFO("Garfield test DEBUG_INFO() d: %d ; s: %s", i , s);

             至于不定数量参数宏与不定参数函数的使用就没神马好说的啦,自己去google吧!

     

    下面引用一位大侠的blog,列出一些常用的debug 语句:

    出自:http://blog.mcuol.com/User/luoming/Article/16499_1.htm

     

    1. #ifdef DEBUG
    2. #define F_OUT printf("%s:", __FUNCTION__);fflush(stdout);
    3. #define L_OUT printf("%s:%d:", __FILE__, __LINE__);fflush(stdout);
    4. #define A_OUT printf("%s:%d:%s:", __FILE__, __LINE__, __FUNCTION__);fflush(stdout);
    5. #define D_OUT printf("DEBUG:");fflush(stdout);

    6. #define F_PRINTF(fmt, arg...) F_OUT printf(fmt, ##arg)
    7. #define L_PRINTF(fmt, arg...) L_OUT printf(fmt, ##arg)
    8. #define A_PRINTF(fmt, arg...) A_OUT printf(fmt, ##arg)
    9. #define PRINTF(fmt, arg...) D_OUT printf(fmt, ##arg)
    10. #define DBUG(a) {a;}
    11. #else
    12. #define F_OUT
    13. #define L_OUT
    14. #define A_OUT
    15. #define D_OUT

    16. #define F_PRINTF(fmt, arg...)
    17. #define L_PRINTF(fmt, arg...)
    18. #define A_PRINTF(fmt, arg...)
    19. #define PRINTF(fmt, arg...)
    20. #define DBUG(a)
    21. #endif

    22. #define F_PERROR(fmt) F_OUT perror(fmt)
    23. #define L_PERROR(fmt) L_OUT perror(fmt)
    24. #define A_PERROR(fmt) A_OUT perror(fmt)
    25. #define PERROR(fmt) D_OUT perror(fmt)
    展开全文
  • 就是在显示行数的左边的空间处双击,打上断点。 如图所示: 打好断点之后右击以debugas进行运行(这里我因为是使用过的JUtil测试,所以跑起来就是用的JUtil)如图所示 然后弹出个提示框,点击确定,如图所...
  • 显示DEBUG数据

    2020-12-19 15:35:16
    目录 显示DEBUG数据 问题 解决方案 添加到游戏中 ...显示DEBUG数据 ...你需要个简单的方法在屏幕上显示调试数据。...我们将创建个叠加层,任何节点均可向其注册...让我们看看这代码。 extends MarginContainer
  • RN Debug浅析

    2018-03-19 14:10:16
    一段时间没有更新博客了,最近也是项目比较忙,公司项目上ReactNative,之前也是没有接触过,所以也是一边学习一边做项目了,最近腾出手更新总结了一下RN的Debug的一个小知识点,不是说怎么去Debug,而是Debug的...
  • 以我的观点看:做出个业务功能是件很简单的事,做好则有难度,高效的做好则是难上加难。...之前还写过篇关于代码编写阶段的文章《提高工作效率的工具“类”》,下面我就主要从代码debug的角度谈谈我的看...
  • CPU 将寄存器*16 + 偏移地址寄存器 构成20位地址,由地址总线送至内存,进行寻址 定位下条要执行的指令。 8086cpu有四个寄存器 :  CS DS SS ES  重点掌握 cs 和 ip 两个寄存器  cs 和ip是...
  • 一段代码深入理解C语言宏

    千次阅读 2014-12-29 20:19:38
    直接上代码吧,就5行: #define QUOTEME_(x) #x #define QUOTE(x) QUOTEME_(x) #define LOG_DEBUG(fmt, ...) \ write_log(log::DEBUG, "["__FILE__ ":" QUOTE(__LINE__)"] " fmt,...这一段代码有几个宏的相关技巧(下
  • 利用IDEA debug发现错误的次经历 今天在做实训项目的时候遇到了个问题 就是在进行添加学生信息的时,发现总是提示手机号码格式不正确,可是明明是以正确的格式输入的却总是提示格式错误 于是在这里打上断点并且...
  • objcopy --keep-symbol main --strip-all hello.debug hello2.debug #除了main函数的符号表保留外,其余都...开发者在需要调试的时候可以下载这个文件恢复elf的调试信息和符号表。 objcopy --only-keep-debug foo f
  • GDB debug 5

    2020-11-25 16:55:31
    gdb debug ,,,, strace ,,,,, 调试程序最让人头疼的就是层出不断的Bug,而且有些Bug...但是我请来了师兄,描述了一下现象:简单说就是,我在主函数中注释掉了个不需要的线程,采用了注释该线程的创建函数pthread_
  •   问题出在std::fill_n赋值的时候越界了,但通过std::cout确定的位置却是另一段完全不相关的代码。以前这种问题基本都是通过std::cout确定位置,然后着重检查有没有溢出,越界啥的,这次完全没得用,白
  • debug 与 release

    2013-04-30 18:53:13
    在vc和vs下进行编程时,会遇到debug与release两种配置。...简单说,debug生成的exe文件没有“代码优化”这个阶段。而release生成的exe是有这个阶段的。 为什么要做这样的区分呢? debug主要是便于调试;
  • AS之Debug调试

    2018-08-19 08:21:55
    但前一段时间需要调试一段代码,通过打log的方式,费时又费力,很简单的错误硬是搞了好久,严重影响进度,所以下心思准备再次好好搞一下debug调试,但使用debug的方法几乎忘得差不多了,于是周末花点时间捡起来,并...
  • Eclipse的Debug初级使用

    2019-09-24 09:37:20
    对于程序员说,设置断点进行调试非常重要,现在我们学习一下Eclipse里Debug的初级...首先,打开eclipse,打好一段简单的java代码 下面进入Debug模式 点击Run - Debug As - Java Application,或者直接 ...
  • 关于Java的简单debug

    2019-09-14 11:03:37
    编写程序时我感觉debug让人又爱又恨,爱是找到了自己的错误,程序达到目标要求,让人身心愉悦,恨时在代码的海洋苦苦遨游逐语句运行,抓耳挠腮到头秃。不论如何debug需要耐心和细心...1、写下一段简单的程序 ...
  • 我想要用Gui里的Frame窗口完成这个小题目,于是就添加了一些组件,但我发现直接运行这代码后number.txt没有我想要的结果(","分割输入的内容,再加到集合里,再写到number.txt里),但是如果在最后个foreach循环设置...
  • 最近在测试上布署的项目经常性的出现验证码过了一段时间以后出不的情况,耐心找了一下,最后在上级的指导下发现了报错,其实说真的,我自己也找到了这个报错,只是没有当一回事。因为这个验证码的东西不是我写的,...
  • 基于8086的汇编语言程序设计题——读入个文本文件并以DEBUG中的D命令格式显示 代码与注释如下 DATA SEGMENT ;数据定义 BUF1 DB 256 DUP( ? ) ;分配文件存放内容单元 BUF DB 20,? ;设置输入缓存区大小 FILE DB 10...
  • pycharm-debug的使用

    2018-12-21 00:41:00
    pycharm之前也使用了有一段时间了,一直不会用debug.今天偶然在看一个python视频的时候,老师有讲解到,特地记录一下: 调试步骤: 1) 设置断点: 在需要打断点的代码行左侧点击即可,点击后出现一个红色原点, 如果要...
  • C语言Debug和Release的介绍

    千次阅读 2018-03-31 16:27:27
    一、定义(1)Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。(2)Release称为发布版本,它往往是进行了各种...(相比Debug同一程序它的内从较小)见下图:三、看下面一段程序#...
  • //否则释放str 释放目前占用的内存 因为 指针会等系会指向新内存 所以这会被浪费掉 len = st.len; //赋值私有成员 无影响 str = new char[len + 1]; //创建新内存 并把新内存地址赋给指针str 因为之前的指向的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 866
精华内容 346
关键字:

来一段debug