debugger 调试不了为什么杀不了

没有调试器(Debugger)就不能编程? - 简书
没有调试器(Debugger)就不能编程?
相信看这篇文章的人,都应该知道调试器是什么。在此就不做解释了。稍微想想就知道,没有debugger,我们肯定是能编程的。Debugger也是一个程序,要是没有它,就不能写程序了,也就不存在Debugger了。今天把这个问题提出来讨论,是因为现在的有些小朋友,已经把Debugger神话了,觉得没有调试器的语言就不是好语言,没有调试器就不能编程了。调试器自有它的用处,但是还没有重要到那种程度。下面就按照以下几点来阐述我对调试器的认识:
调试器的作用
调试器不是万能的
没有调试反而会有哪些好处
调试器的作用
我想它最大的用处,也是其初衷,应该是可以帮助我们定位Bug,从名字也能知道这点。对于初学者而言,还可以通过一步一步的调试来理解程序运行。相信让我们感觉最恐惧的就是“改不完的bug”。有了Debugger,貌似可以让我们好受一些,要是没有它就会感觉寸步难行,连自信心都会打折。相信没有人会对调试器的作用产生怀疑。但我并不认为它是无所不能的。
调试器不是万能的
如果是在生产环境出现异常,相信没有多少人有机会能现场调试,就算能调试,敢不敢现场调试也是一个问题。而且基于源码的调试,某些语言或系统平台是需要debug版本的,而生产环境用的版本,一般不太可能是这种debug版本。但出问题了,还得解决。
调试器也不能解决一些多线程的问题。有些bug是多个线程并行运行的时候才出现的,如果用调试器,暂停调试的当前线程后,bug就不出现了。以此类推,Bug有很多种,并不是所有Bug都能通过调试器来定位。
不是所有平台,所有语言的调试器都是一样,有些做得比较强大,有些则要稍微次一些。这也就意味着有些调试器并不能解决其他的调试器拥有的功能。
没有调试反而会有哪些好处
过度依赖调试器,会让你思维懒惰,总想着出问题的时候调试来解决。其实很多问题,自己稍微动动脑子,就可以避免的。在没有调试器的情况下,会让你更加积极的思考和审视当前的编写的代码,更不容易出错。
没有调试器,你就会想其他的办法来验证程序的正确性,从而你可能会考虑一些以前你自己完全没想过的办法来定位bug。不管是静态检查还是运行时分析。而这些方法,可能会在生产环境也有用。这是非常有价值的。比如完善的日志收集和分析系统。
没有调试器,你会成长地更快,效率更高。有些人用调试器定位问题,真是那个慢啊,一步一步地调试,真比蜗牛还慢。而Bug又一大堆,必然效率低下。没有调试器的情况下,或许你会更加小心的编写代码,对使用的各种语言特性,用法更加的关注,从而提高代码质量。可能一开始就有单元测试覆盖,一步一步走得比较稳。这些都会大量降低低级Bug的数量,从而提高效率。
没有调试器,你可能会真正成为代码一次编写后,没有任何Bug的高手。
如果你还没有尝试过在没有调试器的情况下编程,你可以尝试一下不用调试器完成一个项目,或者干脆使用没有调试器的语言做一个项目,比如Golang。期待你的反馈和宝贵意见。
欢迎来到程序猿的世界,这里是爱好者与梦想家的天堂!拥抱热爱编程,有想法,有激情的各种猿,英雄不论出处!Q群订阅你的位置: >
> 【整理】ADT中调试app心得:有时候不能调试,需要卸载旧的app,然后才能重新继续调试
【背景】之前用ADT去调试某个android的app时,出现问题:无法调试了。console中log是:[ 15:58:49 - xxxxxx] Android Launch!
[ 15:58:49 - xxxxxx] adb is running normally.
[ 15:58:49 - xxxxxx] Performing com.yyy.xxxxxx.activities.MainActivity activity launch
[ 15:58:49 - xxxxxx] Refreshing resource folders.
[ 15:58:49 - xxxxxx] Starting incremental Pre Compiler: Checking resource changes.
[ 15:58:49 - xxxxxx] Nothing to pre compile!
[ 15:58:49 - xxxxxx] Starting incremental Package build: Checking resource changes.
[ 15:58:49 - xxxxxx] Skipping over Post Compiler.
[ 15:58:49 - OpenFile] Refreshing resource folders.
[ 15:58:49 - USBDemoTest] Refreshing resource folders.
[ 15:58:49 - USBDemoTest] Starting incremental Pre Compiler: Checking resource changes.
[ 15:58:49 - USBDemoTest] Nothing to pre compile!
[ 15:58:49 - UsbSerialExamples] Refreshing resource folders.
[ 15:58:49 - UsbSerialExamples] Starting incremental Pre Compiler: Checking resource changes.
[ 15:58:49 - UsbSerialExamples] Nothing to pre compile!
[ 15:59:05 - xxxxxx] Uploading xxxxxx.apk onto device 'c1911'
[ 15:59:05 - xxxxxx] Installing xxxxxx.apk...
[ 15:59:08 - xxxxxx] Re-installation failed due to different application signatures.
[ 15:59:08 - xxxxxx] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[ 15:59:08 - xxxxxx] Please execute 'adb uninstall com.yyy.xxxxxx' in a shell.
[ 15:59:08 - xxxxxx] Launch canceled!如图:对应的原因是:之前android的pad上面的此app是之前的某个版本,和当前新编译的版本不匹配。所以需要去:到android的pad中卸载此app然后重新调试,就可以了:[ 16:01:44 - xxxxxx] Android Launch!
[ 16:01:44 - xxxxxx] adb is running normally.
[ 16:01:44 - xxxxxx] Performing com.yyy.xxxxxx.activities.MainActivity activity launch
[ 16:01:47 - xxxxxx] Uploading xxxxxx.apk onto device 'c1911'
[ 16:01:47 - xxxxxx] Installing xxxxxx.apk...
[ 16:01:55 - xxxxxx] Success!
[ 16:01:55 - xxxxxx] Starting activity com.yyy.xxxxxx.activities.MainActivity on device c1911
[ 16:01:56 - xxxxxx] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.yyy.xxxxxx/.activities.MainActivity }
[ 16:01:56 - xxxxxx] Attempting to connect debugger to 'com.yyy.xxxxxx' on port 8600如图:所以:如果以后遇到类似的,无法调试,看看是不是由于signature不匹配,如果是,则卸载旧的,重新调试(会自动安装新的),就可以正常调试了。转载请注明: & 与本文相关的文章
16 queries in 0.217 seconds, using 9.72MB memory

我要回帖

更多关于 httpdebugger 的文章

 

随机推荐