赞
踩
路径:Android studio菜单栏–Run–View breakpoints
里画对号的,都是我们打的断点。点击上面的“减号”,就可以删除对应的断点。
来张图,感受下两种断点的区别。圈起来的就是临时断点啦。
有没有在调试for循环的时候,出现过这种情况呢?
调试中.
i = 0
i = 1
i = 2
…
i = 10
矮油,我要看i=9的情况啊…展示哥手速的时候到啦,再来一次。。。。
。
现在,我们只需要在断点上,点击右键,在Condition那里,设置我们需要的值,循环就会自动停到我们设置的那个值那里,是不是很激动。
步骤:
1,打开View Breakpoints,如下图
2,在某个断点上,点击右键,找到Disable until hitting the following breakpoint,选中此断点要依赖的断点(依赖的断点不触发,次断点也不会触发)。如下图
省去了,我们为了查看变量赋值,到处打Log日志的麻烦。
打印Log日志,是我们调试程序,分析代码问题的重要手段。
它也是有缺陷的:
上面的情况,我相信很多人,都碰到过吧。
那么,有什么更好的方法来打印日志呢,当然是断点日志啦。
我们可以在View Breakpoints里面,在需要打印数据的断点上,添加日志跟我们在代码里打印日志一样。如下图
这样,我们就完美的避开了上面的问题,忘记打日志了,直接断点出加上,还不用重新跑项目。
当我们接手的项目比较大的时候,我们需要断点调试的地方就特别多。
这个时候,我们如果能按照功能,把断点放到对应的分组。在调试某个功能时,只开启(或)对应分组的断点,是不是就会很方便呢。
你别说,还真有这个功能。
扯完啦,开工。
下图就是创建了一个test的断点分组
如果,我们暂时不想调试该功能,直接去掉 该分组前面的勾选就可以了。
如果想删除断点,选中分组,直接点击上面的“-”号就可以了
我们在打印Log日志的时候,会看到前面有一长串的时间,包名等等信息,看起来特变繁琐。像下面
我们只需要打开Logcat,点击其左边的设置按钮,把不需要的信息,去掉勾选就可以了。
结果
这样,是不是就清爽很多啦。
我们可以在debug的时候。通过,主动抛出异常,来检测程序的执行,是否符合我们的预期。
我们测试的时候,完全可以通过,在debug的时候,通过该技巧抛出异常,利用上面的异常断点捕获异常。
就是个玩儿…
在某些场景下,我们需要测试不同的情况下,我们程序都是老老实实的呢。
不就是不断的修改代码的状态来验证么,小意思…直到有一次,上线时,代码好像没有改回来。。。翻车啦
现在,我们可以通过Force Return(强制返回) 来强制返回不同的情况,以达到测试的效果,还不用修改代码。终于,可以愉快的玩耍了。
看下怎么执行Force Return
最后看下效果,通过isTrue()方法,返回不同的返回值来调试我们的程序。
你有没有在调试的时候,碰到过这种情况,好不容易debug到我们要查看的地方,结果,一个不小心,手又快了,又的从头跑一遍。
现在,我们可以利用Drop Frame来返回上一步,是不是又可以愉快的玩耍了。
大写的注意:已经改变的变量值不会恢复。
有没有遇到过,在打开debug之后,突然发现,少写了一些代码。然后,加上,重新debug,跑完,去掉的呢。
我们可以利用evaluate Expression来查看变量的属性,或者是给变量改变属性。
这个东西绝对是,调试的利器
数量放到变量的上面,点击➕号,在变量上面右键–setValue,修改值后,就可以按照我们的测试意愿来执行了。
有的时候,我们想看看我们的程序是否健壮,会模拟异常,然后,看下是否如我们想的一样()。但是,每次调试都需要我们手动的添加,然后异常,我们自己造的异常。假如,有一天,我们忘记了移除【黑天】
现在,我们不用担心了,idea可以帮助我们强制抛出异常,是不是很兴奋。
https://www.jetbrains.com/help/idea/altering-the-program-s-execution-flow.html#throw_exception
之前,在多线程调试的时候,我们无法控制线程的执行顺序,这是非常头疼的【头疼,肿么调】,
后来发现,idea可以手动设置线程的执行顺序,是不是欢喜。
看下,最后调试的效果
右击断点。选中suspend+Thread。
然后,进入断点后,我们就可以切换到我们想要执行的线程上就可以了
https://blog.csdn.net/kingdelee/article/details/83034876
https://www.jetbrains.com/help/idea/debugging-code.html#d181035e408
对于IDEA来说,只需要在Run->Edit Configuration里,增加一个Remote,设置主机Host和端口Port,然后调试它即可。
jetbrain
https://www.jetbrains.com/help/idea/tutorial-java-debugging-deep-dive.html
项目上线后,不管使用哪个Crash抓取功能,我们看着都是非常不舒服。(费眼,不能直接点到源码位置)
那么,Android studio 有木有功能,能让我们把错误日志导入进来呢?
答案是:当然有。
1,首先,我们把错误日志复制下来
2,然后,点击Studio工具的 Analyze—Stack Trace Or Thread Dump
就会看到下面的输入框了。
3,我们把复制的代码,粘贴进去,点击OK。就会发现错误日志跟我们平时开发时的异常一样了,直接就可以点击进去。如下图,
Debug项目,对我们来说是很常用的技巧。
当项目需要Debug的时候,有时候,C/C++报错的话,每次都需要停顿,像下面这样
SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x0))
对调试程序来说,相当繁琐。
通过修改配置,可以选择你想调试的类型 只调试Java程序还是Java和C++程序。
** 第一步 **
点击菜单栏----run ----Edit Configurations
打开配置项
** 第二步 **
点击选项Debugger,切换debug type,就可以了
位置:sdk—tools–bin—uiautomatorviewer
功能:显示当前正在显示的UI的布局结构
功能类似于tools下面的monitor里面的DDMS查看布局文件,感觉更轻量级。
它可以帮助我们更快的熟悉,UI结构
如下图
命令:adb shell dumpsys window | findstr mCurrentFocus
或者
adb shell dumpsys activity activities
输入命令就会,现在当前正在显示的Activity的名字,帮我们快速定位文件位置。
如果连接的设备不止一个的话,执行上面的命令,会提示,adb超过1个设备
adb.exe: more than one device/emulator
这个时候,不要慌…
执行下面命令,查看连接的设备名
adb devices
就可以看到,连接的所有设备了。
List of devices attached
6c368f57 device
emulator-5554 device
只要,在上面的命令上添加 -s [设备名],就可以了。如下
adb -s 6c368f57 shell dumpsys window | findstr mCurrentFocus
就又可以查看,我们想看的设备正在显示的Activity名字了。
未完待续…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。