??xml version="1.0" encoding="utf-8" standalone="yes"?>蜜桃久久久久,亚洲经典中文字幕,亚洲第一偷拍http://www.aygfsteel.com/jiangshachina/category/16093.html同是Java爱好者,盔R何必曾相识Q?lt;br>    a cup of Java, cheers!zh-cnWed, 14 Dec 2011 21:03:32 GMTWed, 14 Dec 2011 21:03:32 GMT60详解Eclipse断点(?http://www.aygfsteel.com/jiangshachina/archive/2011/11/20/364367.htmlSha JiangSha JiangSun, 20 Nov 2011 12:57:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2011/11/20/364367.htmlhttp://www.aygfsteel.com/jiangshachina/comments/364367.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2011/11/20/364367.html#Feedback7http://www.aygfsteel.com/jiangshachina/comments/commentRss/364367.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/364367.html
详解Eclipse断点
大家肯定都用qEclipse的调试的功能Q在调试的过E中自然也无法避免要使用断点(breakpoint)Q但不知是否对Eclipse中各cL炚w有所了解。本图文ƈ茂地介绍了Eclipse中全部类型的断点Q及其设|,希望对大家有所帮助?2011.11.20)

1. CZE序
BreakpointDemo是一个臆造的应用E序Q只是ؓ了便于讲解Eclipse中各cL点的使用|了。其代码如下图所C,

BreakpointDemo主要包含两个Ҏ(gu)Q?/span>
[1]setValueQ该Ҏ(gu)Ҏ(gu)指定的次?count)Q对成员变量valueq行赋|值的范围?-9的随机整数?/span>
[2]printValueQ该Ҏ(gu)会调用setValue()对valueq行赋|q打印出value的|但,如果value能被3整除Q那么就会抛出IllegalArgumentException异常?/span>

2. Line Breakpoint
Line Breakpoin是最单的Eclipse断点Q只要双L行代码对应的左侧栏,对该行讄上断炏V此处,对第20行代码设|上Line BreakpointQ如下图所C,

可以为Line Breakpoint讄一个条Ӟ那么当程序运行到该断Ҏ(gu)Q只有满定的条gQ才会被中断。右键点ȝ20行的断点Q选择"Breakpoint Properties..."

在弹出的属性对话框中,N上"Conditional"Q然后在文本框中输入"count % 2 == 0"?/span>

该条件表C,当程序运行到W?0行时Q只有当count为偶数时Q程序才会被中断。细心地话,你会发现该断点的图标发生了改变,多了一个问受?/span>


3. Watchpoint
Line Breakpointx于程序运行的"q程"Q大家也常把使用q种断点的调试称为单步调试。但有时候,我们对程序的q行q程不太了解Q可能也不太兛_Q不能确定在什么地方设|断Ҏ(gu)较合适,而可能比较关注某个关键变量的变化或用。此Ӟ可以ؓ该变量设|一U特D的断点--Watchpoint。在此示例,我们最兛_的就是成员变量value的|那么可以ؓ它设|一个WatchpointQ双ȝ9行代码对应的左侧栏就可以了?/span>

使用?中所提及的方法,查看该断点的属性,

默认圎ͼ当该变量被访问或它的D修改ӞE序都会被中断。但在本CZ中,只希望当对value的D行修Ҏ(gu)E序才需要被中断Q所以取消对"Access"的勾选?/span>

q时Q我们会发现原来的Watchpoin图标也有变化了?/span>


4. Method Breakpoint
与关注对某个变量的访问与修改一P我们也可以关注程序对某个Ҏ(gu)的调用情况,卻I可以讄Method Breakpoint。在此处Q设|针Ҏ(gu)法setValue的Method Breakpoint。同理,双击W?1行代码对应的左侧栏即可?/span>

仍然要查看该断点的属性。默认地Q只N了"Entry"Q而没有勾?Exit"?/span>

q表C,当刚q入该方?调用开?ӞE序会被中断Q而,d该方?调用l束)ӞE序q不会被中断。在本示例中Q需要同时勾选上"Exit"?/span>

点击OK之后Q可以看到该断点的图标也有所改变?/span>

Ҏ(gu)q里的设|,当程序运行到W?0行后会在W?2行被中断Q尽这里没有显式的断点Q但q就是setValue()Ҏ(gu)的入?Entry)。必L意地是,E序在运行到W?6行时不会被中断,管它看h像是setValue()Ҏ(gu)的出?Exit)。实际上Q程序会在第17行被中断Q这里才是setValue()调用l束的地斏V?/span>

5. Exception Breakpoint
如果Q我们期望某个特定异常发生时E序能够被中断,以方便查看当时程序所处的状态。通过讄Exception Breakpointp辑ֈq一目标。本CZ故意在第23行抛ZIllegalArgumentException异常Q我们期望程序运行到此处时会被中断。但我们不直接ؓ此行代码讄Line BreakpointQ而是为IllegalArgumentException讄Exception Breakpoint。设|Exception Breakpoint的方法与其它cd断点都不同,它不能通过双击左侧栏的方式在代码编辑器上直接进行设|。点击Breakpoints视图右上角Ş如Ji的图标,

会弹出如下所C的对话框,

在其中选中IllegalArgumentExceptionQƈ点击OKQ这时一个Exception Breakpointp|好了?/span>

当value?的倍数ӞE序会在W?3行被中断Q这时我们就能用调试器来看看value具体是等?Q???/span>

6. Class Load Breakpoint
q有一U大家^时可能不太用的断?-Class Load BreakpointQ即当某个类被加载时Q通过该断点可以中断程序?/span>



上述的Eclipse断点Q我们在现实工作中肯定都有意或无意地使用q其中的几种Q只是不一定十分了解内情Ş了。用好Eclipse的各U断点,可以把很好地帮助我们分析E序Q定位问题?br />


Sha Jiang 2011-11-20 20:57 发表评论
]]>
高效调试Q条件化断点(?http://www.aygfsteel.com/jiangshachina/archive/2009/12/31/307852.htmlSha JiangSha JiangThu, 31 Dec 2009 02:49:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2009/12/31/307852.htmlhttp://www.aygfsteel.com/jiangshachina/comments/307852.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2009/12/31/307852.html#Feedback1http://www.aygfsteel.com/jiangshachina/comments/commentRss/307852.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/307852.html高效调试Q条件化断点
本文?a >JavaLobby上的一?a >博文Q介l了一个用Eclipse和NetBeansq行调试的小H门Q我受益良多Q也希望对大家有所助益?2009.12.31最后更?

最重要的开发者工作之一是调试。在我的大学时代Q我们被q用简单的文本~辑器开发YӞ所以开始时Q我使用打印语句来观察程序在什么地方出错了。现在,IDE使我们能很便捷地完成q一工作?..
我在Eclipse和NetBeans中见q的最佳特性就是条件化断点思想。这个想法很单,打上断点Q然后输入调试U程能够停在该断点处的条件。例如,若有如下代码Q?br />
for(Employee emp: employees)
{
    
if(emp.getType() == Employee.MANAGER)
    {
        addToManagers(emp);
    }
}

假设Q当雇员的getTypeҎ(gu)的gؓEmployee.DEVELOPERӞ我想察看所有变量的|q在单步调试时能保不会q入IF语句块?br /> 在Eclipse中,你可一如往帔R样在IF语句中设|断点,右键点击断点Q你看到如下菜单:


通过NEnable Condition复选框Q你可以在结果对话框中ؓ该断点设|一个条Ӟ


当你键入条gӞ你能获得完全的内Ҏ(gu)C。你也能改变条g的意?-当该条g为真Ӟ或者当在最q一ơ遍历之后D改变Ӟ是否需要停止?br /> 对于NetBeansQ也十分的相伹{你仍要右键点击断点以获得属性菜单:


该对话框也有熟?zhn)的条Ӟ命中ơ数和内?gu)C:


像这LҎ(gu)才能真正地帮助你提升调试的效率--当你知道某个特定的值导致了E序p|Ӟ你就能直捣问题的核心了?br />
大家新q愉?:-D



Sha Jiang 2009-12-31 10:49 发表评论
]]>
NetBeans vs. Eclipse RCP: 插g机制比较(?http://www.aygfsteel.com/jiangshachina/archive/2008/10/15/234341.htmlSha JiangSha JiangWed, 15 Oct 2008 06:40:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2008/10/15/234341.htmlhttp://www.aygfsteel.com/jiangshachina/comments/234341.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2008/10/15/234341.html#Feedback2http://www.aygfsteel.com/jiangshachina/comments/commentRss/234341.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/234341.htmlNetBeans vs. Eclipse RCP: 插g机制比较
    本文?a >JavaLobby上的一小?/a>Q作者对NetBeans和Eclipse的插件机制进行了一些比较,如有兴趣Q可以看看?2008.10.15最后更?

NetBeans与Eclipse处理扩展点及扩展的方式是不同的。让我们看看q些不同之处。请注意Q本文仅针对那些对这两个q_的插件机刉具备相当知识的h?/span>

NetBeans Platform:
定义扩展?/span> 创徏一个接口,q将它置入一个公共模块包中?/span>
创徏扩展 创徏上述接口的实玎ͼq过layer.xml文g它注册到虚拟文件系l中?/span>
d可用的扩? 使用org.openide.util.Lookupcd获取上述接口实现的实例?/span>

Eclipse RCP:
定义扩展?/span> 创徏一个扩展点的描q符Ҏ(gu)Q该Ҏ(gu)定义了扩展点的元素与属性,以及q些元素之间的关pR?br /> 可用的属性类型ؓQbooleanQstringQjavaQresource和identifer。可向该Ҏ(gu)的Q何部分添加文档?br /> 最后,向plugin.xml文g 注册你的扩展炏V?/span>
创徏扩展 Ҏ(gu)上述Ҏ(gu)Q在plugin.xml文g中创Z个子部分Q在此处向属性赋予倹{如果属性类型ؓjavaQ则也要创徏被引用的JavacR?/span>
d可用的扩?/span> 使用org.eclipse.core.runtime.IExtensionPoint获取扩展的列表。从每个扩展中获?a href="http: //help.eclipse.org/ganymede/index.jsp?topic= /org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime /IConfigurationElement.html">IConfigurationElement的列表:
每个IConfigurationElement对应于plugin.xml文g中的一个XML标签?/span>

NetBeansq_ Eclipse RCP
优点 ~点 优点 ~点
非常单,易于学习 扩展Ҏ(gu)有定义它自己Q没有关于是哪个公共模块接口作ؓ扩展点用的信息?/span> 扩展Ҏ(gu)晰地定义了它自己Q快速查看jar文gQ你p立即知道该插件提供了哪些扩展点,以及它们是由哪些元素l成的?/span> 比较复杂Q需要更多时间去学习

使用的查扑֐也未作定?/span> 有许多属性类型:可以在XML文g中描q特定的l果?/span>

扩展和其它的内容都؜写在layer.xml文g中:难以定该模块用于哪些扩展?/span> 可生成扩展的多数l成部分Q见PDE?/span>


定义好了文档的位|?/span>



Sha Jiang 2008-10-15 14:40 发表评论
]]>
Eclipse Weed(?http://www.aygfsteel.com/jiangshachina/archive/2006/10/12/63436.htmlSha JiangSha JiangThu, 12 Oct 2006 03:29:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2006/10/12/63436.htmlhttp://www.aygfsteel.com/jiangshachina/comments/63436.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2006/10/12/63436.html#Feedback2http://www.aygfsteel.com/jiangshachina/comments/commentRss/63436.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/63436.html Eclipse Weed
在用Eclipse的过E中一些小知识的收集,文中的所有描q均在Eclipse3.2环境下?2006.11.13 最后更?/font> )

Eclipse曄使用q的Workspace的列?/font>
文geclipse\configuration\.settings\org.eclipse.ui.ide.prefs?span style="color: rgb(0, 0, 255);">RECENT_WORKSPACES参数记录了该eclipse曄使用q的工作?它们的全路径)?font color="#0000ff">MAX_RECENT_WORKSPACES参数讄了需要被记录的工作区的最多个?默认gؓ5)。这些\径的列表会显C在主菜?/font>File-->Switch Workspace...-->Workspace Lanucher中的Workspace下拉列表框内?br />
在启动时使用指定的工作区
eclipse.exe -data Workspace_Full_Path
注意Q用这U方法用的工作Z会记录到
org.eclipse.ui.ide.prefs (见上一主题)中?br /> q可能是因ؓ在启动时已经明确了工作区Q也׃需要在 Workspace Lanucher 选择了,故Eclipse不将该信息记录到配置文g中?br />
Format多个文g
q一点其实很单,右键点击需要被格式化的文g(或它所在的目录)-->Source-->FormatQ即可?br /> 注意Q?br /> [1]׃该操作没?#8220;后?zhn)?#8221;(即不能做undo)Q所以在做之前要谨慎?br /> [2]如果是右键点L个目录,那么该操作只能媄响该目录当前路径下的文gQ它子目录中的文件不会被格式化?br />
配置外部工具(External Tools)
Ҏ(gu)Eclipse的帮助可以知道配|外部工L一般方法(误Eclipse3.2帮助Q。但对于配置某个特定的外部工兯需要区别对待?/font>JDK/bin中自带的javap.exe可以分解class文gQ帮助我们理解程序的执行q程Q是一个十分有用的工具。下面就以把javap.exe工具配置为外部工具作Z子进行讲q?br /> 假设有目录结构:
Test
 |--src
 |    |--test
 |        |--Test.java
 |
 |--bin
      |--test
          |--Test.class
Test是Eclipse的Java工程Qsrc是源代码目录Q其中有源代码test/Test.java文gQbin是输出目录,其中有test/Test.java被编译后生成的test/Test.calss文g?br /> 如果我们仅仅在cmdH口Q而非Eclsipe环境中)使用javap.exeQ可以在M目录下执行如下Ş式的命o行(前提是已l设|了JAVA_HOME环境变量Q: javap -classpath Workspace_Path\Test\bin -c test.Test
配置外部工具的步骤:
[1]通过主菜?font color="#006400">Run-->External Tools-->
External Tools...q入外部工具配置向导?br /> [2]选择Program,q按左上角的新徏(New Launch Configuration)按钮昄配置对话框?br /> [3]?font color="#006400">Name文本框中输入q个External Tool的名Uͼ本处?font color="#006400">javap
?br /> [4]?font color="#006400">Location
中填?font color="#0000ff">javap.exe
的\径?/font>因ؓjava.exe是工作区之外的程序,所?/font>可以通过Browse File System...按钮q行选择?br /> [5]Working Directory文本框保持ؓI?br /> [6]Arguments中要填入执行javap命o时所需要的参数Q这个参数就是前q命令行中的-classpath Workspace_Path\Test\bin -c test.Test。但我们要该工h通用的用,׃可能这个参?#8220;写死”了。所以需要用一些变?Variable)来代替具体的路径。点L?font color="#006400">Variables...可以看到所有的变量Q我们需要?/font>workspace_locQ?/font>project_name?/font>java_type_name。最l的完全参数如下所C:
-classpath ${workspace_loc}/${project_name}/bin -c ${java_type_name}
[7]点击Apply之后Q就可以在工h的外部工h?带一把红色小锁的Run图标)中发C个名?font color="#0000ff">javap的外部工兯dq去了?/font>
[8]选择某一个Java文gQ然后点dh上的外部工具按钮Q即可对q个Java文g对应的class文gq行分解了。分解信息会昄在控制台中?br />
注意Q?/strong>l心的朋友肯定可以发玎ͼ上述Ҏ(gu)有十分严重的局限性:class文g必须在bin目录下?/font>其实对于讄外部工具的确切方法我没有完全弄清楚,主要是不懂各个Variable的确切含义,以及它们的组合规律?/font>
又:
前面已经提到Q前q的?font color="#0000ff">javap.exe
配置为外部工LҎ(gu)q不很好。关键在?font color="#006400">Arguments
讄的不好,以至于这U方法缺乏够的Ҏ(gu)。现在我们做一些改q:
?/font>
-classpath ${workspace_loc}/${project_name}/bin -c ${java_type_name} 修改?font color="#0000ff">-classpath ${folder_prompt} -c ${java_type_name}?br /> 在这U情况下使用外部工具javapQ我们需要先选中一个Java文g(不能是它的class文g)Q然后再q行外部工具javap。运?font color="#006400">javapӞ会出C?strong>路径选择对话?/font>Q请选择?font color="#000000">class文g(包括它的包\?所在的根目?/strong>。则在此处,q个路径是 Workspace_Path\Test\bin (而不?/font> Workspace_Path\Test\bin\Test ) ?br /> 注意Q这U方法的自由度已l大大提高,但似乎仍然不太理惟뀂因为我们不仅要选择一个Java文gQ还需要选择一个相当于classpath的\径。所以该问题仍然需要l关?..

使用Templat

主菜?font color="#006400">Preferences...-->Java-->Editor-->Templates
Q在Templates中可以看C些已创徏的模板,均都包含4部分Q?br /> NameQ模板的名称
ContextQ模板用的环境
DescriptionQ对该模板功能的单描q?br /> Auto InsertQ?目前q不懂^_^)
?font color="#006400">Preview
文本域中可以看到该模板的通用内容。下面以foreach模板Zq行讲述?br /> NameQforeachQ即Enhanced for-LoopQ是JDK5.0的新Ҏ(gu)之一?br /> ContextQjavaQ即在进行Java~码时?br /> DescriptionQiterate over an array or IterableQ即遍历一个数l或一个实CIterable接口的对象?br /> Auto InsertQ?无内?
Preview的内容如下:
for (${iterable_type} ${iterable_element} : ${iterable}) {
    ${cursor}
}
Preview中的内容Q其实也是该模板功能的实现方式。它指示了当使用q个模板Ӟ应该如何生成代码?/font>
我目前还不知?{}通用元素的用方法,主要是不知道所有的可被使用?{}通用元素及其意义?/strong>不过Ҏ(gu)q些通用元素的名字,我们仍然能够猜测到它的意义: ${iterable_type} QP代器中包含的元素的类型; ${iterable_element}Q声明的一个P代器中元素的引用变量Q?/font> ${iterable}QP代器对象本n的引用变量; ${cursor}Q光标的位置?/span>
使用foreach模板Q?/strong>~辑Java源文Ӟ先写?font color="#0000ff">foreachQ然后再接着使用l合快捷?font color="#0000ff">Alt+/(使用Content AssistQ即内容提示或所谓的感知)Q此时就会出现foreach模板的提C,单击该提C即可?br /> 创徏模板Q关键也是要弄清楚通用元素的用方法。但对于不太复杂的模板,也可以不使用/用通用元素。不使用通用元素Q会使模板的通用性差些?br />
讄多个Source与Output目录
通过工程Properties-->Java Build Path-->SourceQ可以看到该工程的默认Output目录和所有Source目录?br /> 可以通过“Add Folder...”?#8220;Link Folder...”为工E增加Source目录?br /> 打开已存在的Source目录的树Q可以发?font color="#006400">Output folder
Q一般它的gؓDefault output folder。选中q编辑它Q就可以个Source目录选择Output目录了?br /> 最直接的方?/strong>Q?font color="#006400">~辑工程根目录下?/font>.classpath文gQ在该文件中加入如下形式的语句:
<classpathentry kind="src" path="源文件目?/em>" output="Output目录"/>
卻I增加一个Source目录Qƈ为它讄一个Output目录?br /> 工程的默认Output目录的配|语句的形式如下Q?br /> <classpathentry kind="output" path=" Output目录 "/>
卻I它不需要对应特定的源文件目录,工程的所有源文g目录都与它关联?br />
指定Eclipse启动画面(Splash)
eclipse.exe -vmargs -Dosgi.splashLocation=Your_Splash_Path
Your_Splash_Path 是所指定的启动画面的路径Q必L一?strong>bmp格式的图?/strong>?br />
Z么Eclipse能够~译Z同版本的class文gQ?/strong>
右键点击Project-->Java Compiler-->JDK Compilance-->Compilance LevelQ在q个下拉列表框中可以选择不同的编译别,目前包括1.3Q?.4Q?.0?.0?br /> Eclipseq不使用当前pȝ中安装的JDK(JRE)中的~译?javac)~译工程源代码,而是使用JDT中的~译工具来进行。这也就能够解释Qؓ什么在pȝ中只安装了JDK1.4.2Q但Eclipse仍然能够~译?.0?.0的class文g?br /> 虽然Eclipse可以为每个工E选择不同的编译别,且该~译行ؓ与JDK中的javac无关Q但在Eclipse中运行class所需要的JRE却必Lpȝ中已l安装了的。可以在主菜?font color="#006400">Window-->Preferences-->Java-->Installed JREs
中添加或选择不同的JRE?br />
updating...


Sha Jiang 2006-10-12 11:29 发表评论
]]>
Eclipse快捷??http://www.aygfsteel.com/jiangshachina/archive/2006/08/11/63034.htmlSha JiangSha JiangFri, 11 Aug 2006 08:30:00 GMThttp://www.aygfsteel.com/jiangshachina/archive/2006/08/11/63034.htmlhttp://www.aygfsteel.com/jiangshachina/comments/63034.htmlhttp://www.aygfsteel.com/jiangshachina/archive/2006/08/11/63034.html#Feedback0http://www.aygfsteel.com/jiangshachina/comments/commentRss/63034.htmlhttp://www.aygfsteel.com/jiangshachina/services/trackbacks/63034.html本文q不是Eclipe全部快捷键的列表Q而只列D一些本人用q或认ؓ应该学会使用的快捷键。不断更C...  阅读全文

Sha Jiang 2006-08-11 16:30 发表评论
]]>
վ֩ģ壺 | Ϫ| | | Ӣɽ| | | ¦| | | Ͻ| ֹ| ξ| ʲ| | ͤ| | | | | ˫| ϳ| | ׯ| | | »| ʮ| | ƽ| | | | | ѽ| Ͷ| ƽ| | | ˮ| |