Eclipse 工具使用的技巧
一、常用快捷键:
Ctrl+F11 运行
Ctrl+Shift+/ 在代码窗口中加入/* … /注释
Ctrl+Shift+\ 消除/ … */注释
Ctrl+Shift+O 将缺少的import语句加入Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+Shift+F 格式化当前代码
F3 跳到声明或定义的地方
F4 显示类图
Ctrl + Alt + ↓(↑) : 向下(上)复制本行
二、断点调试中的快捷键:
F5 Step Into 单步进入
F6 Step Over 单步执行跳过
F7 Step Return 单步跳出
三、常见配置:
1.显示行号:Window->Preferences>General->Editors->Text Editors->勾选show line numbers
2.增强Eclipse、MyEclipse的代码自动提示功能
Windows→Preferences→Java→Editor→Content Assist
AutoActivation Delay默认值为200(单位是毫秒)也就是说在打“.”之后停留200毫秒才能出现智能感知的提示。那么将它修改为20之后提示速度明显上升。
原理:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.” 改成“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提示功能了。(具体后面有说,放心)增强Eclipse ,MyEclipse 的代码提示功能,具体怎么样来配置?下面开始说步骤
(1). 打开Eclipse,然后“window”→“Preferences”
(2). 选择“java”,展开,“Editor”,选择“Content Assist”。
(3). 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项。其实就是指触发代码提示的就是“.”这个符号.
(4). “Auto Activation triggers for java”这个选项,在“.”后加abc字母,方便后面的查找 修改。然后“apply”,点击“OK”。
(5). 然后,“File”→“Export”,在弹出的窗口中选择“Perferences”,点击“下一步”。
(6). 选择导出文件路径,本人导出到桌面,输入“test”作为文件名,点击“保存”。
(7). 在桌面找到刚在保存的文件“test.epf”,右键选择“用记事本打开”。
(8). 可以看到很多配置Eclipse的信息
(9). 按“ctrl + F”快捷键,输入“.abc”,点击“查找下一个”。
(10). 查找到“.abc”的配置信息.
(11). 把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,”,保存,关闭“test.epf”。
(12). 回到MyEclipse 6.0.1界面,“File”→“Import”,在弹出的窗口中选择“Perferences”,点击 “下一步”,选择刚在已经修改的“test.epf”文件,点击“打开”,点击“Finish”。该步骤和上面 的导出步骤类似。
(13). 最后当然是进行代码测试了。随便新建一个工程,新建一个类。
总结:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.”改成 “.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提示功 能了。顺便说一下,修改类名,接口名等以不同颜色高亮的,可以这样配置在“java”→“enditor”→ “syntac”,右边展开“java”→“classes”,勾上“Enable”这个选项,选择自己喜欢的颜色即可。当然还有其他相关的颜色配置。具体就不说啦。其实,在“Preferences”这个东西,有很多可以配置的 东西,使得MyEclipse 优化的,具体的就要各个人根据自己个人喜好去配置了。
四、myeclipse字体设置
在window->perferences->General->Appearance->Colors and Fonts->Text Font 单击change 修改
五、how to open a java project in eclipse
Use File > Import and select General > Existing Projects into Workspace. Click next and then browse to the directory contain the project directory.
六、Call stack in Eclipse
In the “debug perspective”, show the view named “debug”. For each thread that is currently halted, this view shows the full call stack. Clicking on one element of this stack switches the editor view to display the corresponding class, and “variables” view will show variables of this stack element.
七、调试技巧(From CSDN)
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳过
3.Step Return (also F7) 执行完当前method,然后return跳出此method
4.step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering)
5.resume 重新开始执行debug,一直运行直到遇到breakpoint。
例如 :A和B两个断点,debug过程中发现A断点已经无用,去除A断点,运行resume就会跳过A直接到达B断点。
6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count)
7.inspect 检查 运算。执行一个表达式显示执行值
8.watch 实时地监视对象、方法或变量的变化
9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint.
10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂
11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)
12.添加Exception breakpoint 捕抓到Execption时暂挂(待续…)
断点属性:
1.hit count 执行多少次数后暂挂 用于循环
2.enable condition 遇到符合你输入条件(为ture/改变时)就暂挂
3.suspend thread 多线程时暂挂此线程
4.suspend VM 暂挂虚拟机
13.variables 视图里的变量可以改变变量值,在variables 视图选择变量点击右键–change value.一次来进行快速调试。
14.debug 过程中修改了某些code后–〉save&build–>resume–>重新暂挂于断点
15.resume 当debug调试跑出异常时,运行resume,重新从断点开始调试
八、 Eclipse 高级调试技巧
Debug视图
认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。
线程堆栈视图
分别介绍一下这几个按钮的含义:
1.表示当前实现继续运行直到下一个断点,快捷键为F8。
2.表示打断整个进程
3.表示进入当前方法,快捷键为F5。
4.表示运行下一行代码,快捷键为F6。
5.表示退出当前方法,返回到调用层,快捷键为F7。
6.表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号
变量视图
1.为变量名视图,显示当前代码行中所有可以访问的实例变量和局部变量
2.显示所有的变量值
3.可以通过该窗口来改变变量值
断点视图
1.显示所有断点
2. 将当前窗口1中选中的端口失效,再次点击启用。
3.异常断点
表达式视图
表达式视图:表达式视图是Debug过程中较为常用的一个视图,可以对自己的感兴趣的一些变量进行观察,也可以增加一些自己的表达式,也可以查看一行代码的运行结果。
1.表达式
2. 点击此可以新增一个表达式
代码视图
代码视图:用来显示具体的代码。其中绿色部分是指当前将要执行的代码
场景一:小明辛苦了两天终于将自己的负责的任务完成了,第二天转测后,测试找到了小明说,小明的程序有bug,可以是小明经过仔细调试,发现本地没有任何问题,但是测试的环境上确实有问题,所以小明遇到了难题,测试的环境linux,又不能上去linux去debug,小明这个时候想要是Linux也可以debug就好了.
远程debug
远程debug:远程debug顾名思义,能够将远程操作系统上的任何java进行debug,但是有前提是本地需要有同步的代码。
1.远程debug的步骤是在远程操作系统上启动java进程时增加特殊的
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=
D
E
B
U
G
P
O
R
T
,
s
e
r
v
e
r
=
y
,
s
u
s
p
e
n
d
=
n
2.
在
E
c
l
i
p
s
e
中
新
建
一
个
R
e
m
o
t
e
J
a
v
a
A
p
p
l
i
c
a
t
i
o
n
远
程
d
e
b
u
g
1.
打
开
D
e
b
u
g
C
o
n
f
i
g
u
r
a
t
i
o
n
s
视
图
2.
右
击
R
e
m
o
t
e
J
a
v
a
A
p
p
l
i
c
a
t
i
o
n
,
N
e
w
3.
选
择
源
码
工
程
4.
输
入
远
程
I
P
和
端
口
,
端
口
即
服
务
端
的
DEBUG_PORT,server=y,suspend=n 2.在Eclipse中新建一个Remote Java Application 远程debug 1.打开Debug Configurations视图 2.右击Remote Java Application, New 3.选择源码工程 4.输入远程IP和端口,端口即服务 端的
DEBUGPORT,server=y,suspend=n2.在Eclipse中新建一个RemoteJavaApplication远程debug1.打开DebugConfigurations视图2.右击RemoteJavaApplication,New3.选择源码工程4.输入远程IP和端口,端口即服务端的DEBUG_PORT,点击OK。
场景一:小明写了一个任务执行者,该执行者不间断的执行一些任务,在现网上运行了一段时间后,发现有概率的出现一些故障,发现运行一段时间后,该任务者异常退出了,退出的因为是空指针,可以小明想要在本地debug,不知道断点打在哪里,该问题是概率事件,不一定会出现,所以小明debug几遍下来后,头晕眼花,连代码都看不清楚了,小明想要是能有个断点每当出现空指针异常的时候就停下来让他发现问题,那该多好呀。
异常断点
异常断点:在定位问题的过程中,常常会遇到断点无法打到合适的位置,以至于和问题的触发点千差万别,所以这个时候不妨试试异常断点,顾名思义,异常断点是指抛出某种异常后自动挂起的断点。
点击红色部位,增加一个异常断点
输入想要定位的异常类型,例如NullPointerException,这样系统中抛出任何NullPointerException异常后,都会挂起当前线程,给你机会去定位问题。
场景一:小明写了一个巨大的循环,在调测代码时,小明发现每当循环到第100000次的时候,就是出现问题,没有达到自己的预期,于是小明在循环里打了个断点,想看看到底怎么回事,可小明万万没有想到,想要到达100000次循环是多么的困难,小明这个时候已经开始浮想联翩,如果能有这样的断点:
If 循环次数== 100000,线程停下来
条件断点
如右图,循环1000次,如果想要在循环到500
次的时候停下来,可以创建一个条件断点,右
击断点悬着Breakpoint Properties。
选中Enable Condition
在空白处,添加你自己的条件,如果条件返回true,线程会被挂起,如果为false,则忽略该异常
Hit Count为该断点经过多少次后,正式挂起线程,如果设置为500,则表达前499次,经过该断点都不会停下,当第500次,该断点会挂起当前线程。
表达式
表达式可以查看一些在当前代码中没有的命令行,方便定位问题。
场景一:小明最近遇到一个难题,在调用一个第三方插件时总是会有问题,小明怀疑是第三方插件的bug,但小明没有找到源码不能进行debug,小明该怎么办呢?
Debug定位第三方插件的问题
1.使用反编译工具将代码反编译
2.将反编译后的源码进行过滤
3.修复源码编译错误
4.进行debug
Debug一些经验
1.尽量减少debug,少用debug,优秀的程序员总是花80%的时间来思考如何解决问题,20%的时间来动手完成代码,而糟糕的程序员总是用20%的时间去写代码,80%的时间去调试代码,动手之前尽量想好如何去做,并且已经为你自己的思路做了充分的实验。
2.尽可能的提高debug的效率,设置合适的断点,使用快捷键。
3.debug的F6快捷键经常用到,它与金山词霸的快捷键冲突,所以在debug的时候最好将金山词霸关掉。
4.debug的表达式是可执行代码,将会对代码结果产生永久性影响,在调试时注意,经常将不用的表达式清除掉。