Eclipse中Debug调试及视图.docx
- 文档编号:6326203
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:11
- 大小:71.75KB
Eclipse中Debug调试及视图.docx
《Eclipse中Debug调试及视图.docx》由会员分享,可在线阅读,更多相关《Eclipse中Debug调试及视图.docx(11页珍藏版)》请在冰豆网上搜索。
Eclipse中Debug调试及视图
Eclipse调试器和Debug视图
编者注:
PawelLeszek最初于2003年5月撰写了下文,后来由ChrisAniszczyk于2007年4月进行了更新。
EclipseSDK是针对Java?
开发工具(Java?
DevelopmentTools,JDT)的项目,它具有一个内置的Java调试器,可以提供所有标准的调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。
除此之外,还可以调试远程机器上运行的应用程序。
Eclipse平台很健壮,因为其他编程语言可以将该平台提供的调试工具用于各自的语言运行时。
正如下文所示,同一个
EclipseDebug视图也可以用于C/C++编程语言。
该组件为Eclipse提供
Eclipse平台工作台及其工具是围绕JDT组件构建的,了下列特性:
项目管理工具
透视图和视图
构造器、编辑器、搜索和构建功能
调试器
Eclipse还有一个特殊
它可以显示每个调试
Eclipse调试器本身是Eclipse内的一个标准插件集。
的Debug视图,用于在工作台中管理程序的调试或运行。
目标中挂起线程的堆栈框架。
程序中的每个线程都显示为树中的一个节点,Debug视图显示了每个运行目标的进程。
如果某个线程处于挂起状态,其堆栈框架显示为子元素。
在使用Eclipse调试器之前,假定您已经安装了合适的JavaSDK/JRE(我推荐使用JavaVMV1.4)和EclipsePlatformSDKV3.3,而且两者的运行都没问
题。
一般来说,先用Eclipse示例测试一下调试选项比较好。
如果想开发和调试C/C++项目,还需要获得并安装C/C++开发工具(C/C++DevelopmentTools,CDT。
关于JavaSDK/JREEclipse平台和示例以及CDT,请参阅参考资源。
图1显示了Debug透视图的一般视图。
i「.n^.'tioipMSbt
■¥打*O-ML■訣F
0t^「i一hw計I
'7=-—■—-——------.--—
'■•|・fT^tfi-"J號吃*9:
■iflkiisM气jrte>BlJ■-ri0*irs"
m厂MFjC"仝訶r*Jf*^^3ueL>>'
兰Em曲主■”厂壬曰I程i*
"■狂陶Lt/*兀雀■•皿r>
'etIM「^r«!
ii^^-p
庁言址HhPGklE:
■*
[bwr^£.<«-:
.^:
(-Ci*OtM匚;E.谊
:
:
Mph护匕zstfL3ct+r.C£»/Zren
二二一匚一」亡二,
Gi吟Mi
TbH・1
1■KT*a迂-
■tf
-«i
寸出卜亠5*圧呻!
口丁
T国LThr二
画kllq
■2
牺帆鈕笔町w:
-ts<'kv--a-s*T
壬育Q冷•対乔知:
F「冶-律"
£dES£JtBe;^^!
^>「gT匚>击警T也Fug"ECE
urrfdjLMr王r-Mt•丄Th忙,
2Wgr.^—-w-T-..-■»:
呷科2jJ(・.:
!
~■*\
三L*:
*L:
r厂-TiF<屮吕
~tkA>i
■.1乓:
?
厂■:
TftrT;!
^*-P!
T^;^c^?
ht:
Ci*Fi*ritiTJ«r-•加KfiJ曲5,gt胡3匚・了「r
ET
创J
■I_
4f*■>匸事,页IR4di^hViriEF
,*
・边F*二E-冨■i\
邑・tM险F5tr^SrIsTiv*4^小iBgl如迟tW
..n.±vLjz=uvM▼■I*・4-M气】[一*・a:
。
匚亍-a亠・■w亠*斗*-・:
•>■<=¥层_二=・
.-r[±«Ljz=Li**D-LttfiricZ.UPtiSJ^rl/LlA^:
I和飞:
-Acti■Lc6,T?
:
T.SJlfAArj
V0*"™^*Swt-IL律曲FYS^r^d?
・n=ii^i丹1»Jif吐士十為聲仲黔叭醪■li誉;Mf皆T.jjpC7a歸I备剁
调试Java语言程序
在可以调试项目前,需要干净地编译和运行代码。
首先,需要为应用程序创建一个运行配置,确保应用程序可以正确启动。
然后,需要通过Run>Debug菜单
以类似的方式设置调试配置。
还需要选择一个类,将它作为调试的主Java类来使用(请参见图2)。
您可以按照自己的意愿为单个项目设置多个调试配置。
当调试器启动时(从Run>Debug),会在一个新的窗口中打开,这时就可以开始调试了。
图2.在调试配置中设置项目的主Java类
dRun
Create,manage,arxJrwnconfiguretiotis
Rlpa皿BwpicaE)?
'
•9EdcBcAppkaaor閤jtfvftAp(jet
=yAppAcBEon
£0
TDevPrsmewE
25De^-Fr*r tJiUnit jj'JUntPUfl^Teat *出O5(jfFraffiSJjfffc 和—I. Nikmatches14ofiSitems OHatnArgizneritsBhJR£'\: •5ajr«穩E"啦二£fl(晒(护 武; Kani-dasi: a.A □indgfiJ浮tCEIfcrwwiMeix^rchngfcramsn □induce怕6ri(edi(rtai(%诂飾seacbingfvOStapnmari 接下来,将讨论Eclipse中的一些常用调试实践。 设置断点 在启动应用程序进行调试时,Eclipse会自动切换到Debug透视图。 毫无疑问,最常见的调试步骤是设置断点,这样可以检查条件语句或循环内的变量和值。 要 在Java透视图的PackageExplorer视图中设置断点,双击选择的源代码文件,在一个编辑器中打开它。 遍历代码,将鼠标放在可疑代码一行的标记栏(在编辑器区域的左侧)上,双击即可设置断点。 图3. 编辑器左侧看到的两个断点 B.r,ijr.—jis -5S-ZCzrJ.^ziIf;Jt.亡i匚匸-r: .匸r: : =i pobltei14rt Diaplaydispliy■()j tryti ittretiiriiCode-FlarfoxiaO: *creicsiSJidflufiPtjrJtDeziCft.(-aiaplaynnw押piieatiohNsr* 11(letQTJLCod#■PlfttronBUl.R£lVR: : _fi£S2'JiST}i rflBrnLjipFlic^uisn*屈^」匚^£5盘3「; i- return环ppi工乍亍OX; 从Run>Debug菜单启动调试会话。 最好不要将多条语句放在一行上, 现在, 因为会无法单步执行,也不能为同一行上的多条语句设置行断点。 图4.视图中左侧空白处的箭头指示当前正在执行的行 XJSt題心V田m爲勺b°s SodeetExceptiontcaughtanduncaught irmiF-ini3iEi[-]|F-jr3iBjnaniBjrs&sjNEDUunjCBDUUiqj— lAppncatHJii[line: 13]-startflAppficationContext)! Appicaton[line;211Jtart(lAppicationContext) BuildErrorReporterPine;250]-valdateBinlrdudes(IBuildEntry) BuildErrorReporterSPEJEFfleNarneFlter-PDEFEleNarneFiter BuildSiteActionpine;S3]-rinflAction) EdipseStarterPine: 1631-run(£tring□„Runnable) FeatureSectaon-setFormInput{Object) FeatureSectsonDhe: 410]-mode'lChanQedffModeKZhangedEvent)FeatureSection'[line: 410]-inodelChanged(IModelChangeclEvent3 FeatureSeetjonDhe: 456]-updateButtons(boolean,boolean)FileSystemProvisicxierWizardpine;3S]*FileSvstemProvisionerV'/izarclOJREInfoDirte: 59]-geUVHLocsbon(String)JRfSection-modifyText(Mo(ifyEvcnt) LaundiArgumentsHelper[line: 100]*getUserVMArguments(iLsunchConfiguration) 图5. LaunchArgumentsHelper(line: 124]*qetUserWArqumentsflLaurxiiConfiquratioriii ! 夕Propertiesfora.Application[lined8}-startflAppIkatfonCont..*回 图7.通过Inspect选项计算表达式的值 /•{n&c■ n/ poblicObjecLsuaTt(1祁pile*匸: lckCqe匸•mt;canLcxt)斤Duplaydisplay®Fla^forni^^I.credteDisptryqintreturnCccEt*Pl*tfomUl.cr*Jt*AIt4*etLiri: C<3des=PlatrorB^I-RfrETRfJretOTEIAppiiCi110-HTA^ returnZAppllcatlon. Jfinally{~ dz^lplay.dxJFcae(); r、"oontexl'-EdcKTAfisK^rde牺“乃+««ppk4W9Appk4tienifdsMji t■&HMhMv ■曲3・t Suspendwhen: '0conditioris Ovalueofcoomtiorich^ges SuspendPoky: SiispendThreadv 计算表达式的值 为了在Debug透视图的编辑器中计算表达式的值,选择设置了断点的那行代码,在上下文菜单中,通过Ctrl+Shift+I或右键单击您感兴趣的变量(参见图7) 选择Inspect选项。 在当前堆栈框架的上下文中会计算表达式的值,在Display窗口的Expressions视图中会显示结果。 a.application 剪切活动代码 Display视图允许您以剪切类型的方式处理活动代码(参见图8)。 要处理一个 变量,在Display视图中输入变量名即可,视图会提示您一个熟悉的内容助手。 视图 图8.Display .■~~■~~—■-;■■Mq Di即;日厂烫.\5Console■蛊TasksSearch context*getSrandinqld(> (java.lang.String^s.p工odiiutf 当调试器停止在一个断点处时,您可以从Debug视图工具栏(参见图9)中选择StepOver选项,继续调试器会话。 该操作会越过高亮显示的那行代码,继续执行同一方法中的下一行代码(或者继续执行调用当前方法的那个方法的下一行代码)。 执行上一步后发生改变的变量会用某种颜色高亮显示(默认是黄色)。 颜色可以在调试首选项页面中改变。 图9.改变颜色的变量 要在Debug视图中挂起执行线程,选择一个运行线程,单击Debug视图工具栏中的Suspend。 该线程的当前调用堆栈就会显示出来,当前执行的代码行就会在 Debug透视图中的编辑器中高亮显示。 挂起一个线程时,将鼠标放在Java编辑器中的变量上,该变量的值就会在一个小的悬停窗口中显示出来。 此时,该线程的顶部堆栈框架也会自动选中,其中的可视变量也会在Variables视图中显示出来。 您可以通过单击Variables视图中合适的变量名来检查变量。 热交换错误修正: 动态代码修正如果运行的是Java虚拟机(JavaVirtualMachine,JVMV1.4或更高的版本,Eclipse支持一个叫做热交换错误修正(HotswapBugFixing)的功能,JVMV1.3或更低的版本不支持该功能。 该功能允许在调试器会话中改变源代码,这比退出应用程序、更改代码、重新编译、然后启动另一个调试会话更好。 要利用该功能,在编辑器中更改代码后重新调试即可。 由于JVMV1.4与Java平台调试器架构 (JavaPlatformDebuggerArchitecture,JPDA兼容,所以才有可能具备该功能。 JPDA实现了在运行的应用程序中替换经过修改的代码的功能。 如果应用程序启动时间较长或执行到程序失败的地方时间很长,那么这一点特别有用。 如果在完成调试时,程序还没有全部执行一遍,在Debug视图的上下文菜单中 选择Terminate选项。 容易犯的一个错误是在调试器会话中使用Debug或 Run,而不是Resumes这样做会启动另一个调试器会话,而不是继续当前会话。 回页首远程调试 Eclipse调试器提供了一个有趣的选项,可以调试远程应用程序。 它可以连接到一个运行Java应用程序的远程VM,将自己连接到该应用程序上去。 使用远程调试会话与使用本地调试会话大致相同。 但是,远程调试配置需要在Run〉Debug窗口中配置一些不同的设置。 需要在左侧视图中先选择RemoteJava Application选项,然后单击New这样就创建了一个新的远程启动配置,会显 示出三个选项卡: Connect、Source和Common在Connect选项卡的Project字段,选择在启动搜索源代码时要引用的项目。 在Connect选项卡的Host字段,输入运行Java程序的远程主机的IP地址或域名。 在Connect选项卡的Port字段,输入远程VM接收连接的端口。 通常,该端口在启动远程VM时指定。 如果想让调试器决定在远程会话中 Terminate命令是否可用,可以选择AllowterminationofremoteVM选项。 如果希望可以终止连接的VM,则选择该选项。 现在,在您选择Debug选项时,调试器会尝试连接到指定地址或端口的远程VM,结果会在Debug视图中显示出来。 如果启动程序不能连接到指定地址的VM,会出现一条错误信息。 通常来说,是否可以使用远程调试功能完全取决于远程主机上运行的JavaVM图10显示了 一个远程调试会话的连接属性设置。 图10.设置一个远程调试会话的连接属性 —-=-_亠. CrHte,iiMfugCeandnn#conftquntkms A-^xh与*wr*Ksee啊deXc^TrcifleFS ypK: iJiJaLdneh53*MR&5i0tac® -芒Ir叭毎為吊营*ffighOA "SBURHcHS^H .KCMM^.gSwrcf汇C.«™» 取JBCt ofQ.ed^tpdmf ■CmnecrrtPi* St*心伺 1? 回页首调试其他语言 尽管Java语言是Eclipse使用的最广泛的语言,但是Eclipse是一个可扩展的平台,可以支持许多其他的语言。 Eclipse可以通过C/C++开发工具(CDT 支持C/C++。 CDT扩展了标准的EclipseDebug视图,添加了调试C/C++代码的功能,CDTDebug视图可以在工作台中管理C/C++项目的调试过程。 CDT中没有内部的调试器,但是它提供了一个GNUGDB调试器的前端,该调试器必须在本地可用。 还有其他项目可以提供各自的调试器,例如PHP开发工具(PHP DevelopmentTools,PDT,请参见图11。 图11.PHP调试器 八海昭_£5^论©6"片「DKSfirv曲 *Ph#Debupoer«tbca^-oft: I'OOOl=e■nvMdtwJfft^pendKQ 三brealOprtO' B)tmtJ.phQ|eiDMi.flhp •funQttonibrca咖PintO■! r■O; -O; -ECl)debugsI; 回页首结束语 Eclipse平台提供了一个内置Java语言调试器,它带有标准的调试功能,包括分步执行、设置断点和值、检查变量和值以及挂起和恢复线程功能。 它还可以用来调试运行在远程机器上的应用程序。 Eclipse平台主要是一个Java开发环 境,但是其中的EclipseDebug视图还可以用于C/C++、PHP和许多其他的编程语言。 回页首致谢 感谢TylerAnderson绘制了图11。 参考资料学习 您可以参阅本文在developerWorks全球站点上的英文原文。 访问Eclipse.org获得关于程序及其使用的全面信息。 查看AjaxToolsFramework(ATF)flash页面和项目页面,了解JavaScript调试。 通过这份EclipseCon教程了解EclipseDebugFramework的知识。 查看“Eclipse推荐阅读清单”。 浏览developerWorks上所有的Eclipse文章和教程。 Eclipse的新用户应该从这里查看Eclipse新手入门。 查看IBMdeveloperWorks的Eclipse项目资源中心,扩展您的Eclipse技能。 要收听针对软件开发人员的有趣访谈和讨论,请查看developerWorks podcasts。 要获得Eclipse平台的介绍,请参阅“Gettingstartedwiththe 随时关注developerWorks 的技术事件和网络广播。 EclipsePlatform”。 开放源码开发人员的即将举行的会议、商业展 查看全球范围内面向IBM览、网络广播和其他活动。 访问developerWorks开放源码技术专区,提供了大量的how-to信息、工具和项目更新,帮助您使用开源技术进行开发,并与IBM产品结合使用。 获得产品和技术 在IBMalphaWorks查看最新的Eclipse技术下载。 下载IBM产品评估版本,开始使用来自DB2? Lotus? 、Rational? 、Tivoli? 和WebSphere? 的应用程序开发工具和中间件产品。 使用IBM试用软件.创建您的下一个开放源码开发项目,可通过下载或从DVD中获得。 讨论 查看EclipseCDT新闻组,了解有关C/C++调试的开发帮助。 (选择该链接将启动默认的Usenet新闻阅读器应用程序,并打开 eclipse.tools.cdt。 ) 查看EclipseATFnewsgroups,了解有关JavaScript调试的开发帮助。 (选择该链接将启动默认的Usenet新闻阅读器应用程序,并打开 eclipse.webtools.atf。 ) 查看Eclipseplatformnewsgroups,提出有关调试以及Eclipse平台 方面的问题。 (选择该链接将启动默认的Usenet新闻阅读器应用程序, 并打开eclipse.platform。 ) EclipsePlatformnewsgroups应该是您讨论有关Eclipse问题的第一 站。 (选择该链接将启动默认的Usenet新闻阅读器应用程序,并打开 eclipse.platform。 ) Eclipsenewsgroups为对使用和扩展Eclipse感兴趣的人员提供了大 量参考资料。 通过参与 developerWorksblogs力廿入developerWorks社区。 作者简介 是IBMLotus的一名软件工程师,致力于与OSGi相关的开 GentooLinux发行版的工作,同时还 ChrisAniszczyk 发。 他是一个开放源码的爱好者,致力于 是一些Eclipse项目(PDE,ECF,EMFT的提交者。 您可以随时与他讨论关于开放源码和Eclipse的问题。 PawelLeszek是StudioB的一名作家,他是一位专长于Linux/Win/MacOS系统体系结构和管理的独立软件顾问和作家。 他具有许多操作系统、编程语言和网络协议方面的经验,尤其是LotusDomino和DB2方面的经验。 Pawel还是LinuxWorld上一系列文章的作者,以及PCWorld波兰版的Linux专栏作家。 Pawel和他妻子以及可爱的小女儿住在华沙。 欢迎提问并提出意见;您可以直接 给作者发电子邮件(pawel.leszek@ipgate.pl)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Eclipse Debug 调试 视图