Vol.
14,No.
112003JournalofSoftware软件学报1000-9825/2003/14(11)1827一种具有快速条件断点的并行程序调试器刘建+,王皓,沈美明,郑纬民(清华大学计算机科学与技术系高性能计算技术研究所,北京100084)AParallelDebuggerwithFastConditionalBreakpointLIUJian+,WANGHao,SHENMei-Ming,ZHENGWei-Min(HighPerformanceComputingInstitute,DepartmentofComputerScienceandTechnology,TsinghuaUniversity,Beijing100084,China)+Correspondingauthor:Phn:86-10-62783505,Fax:86-10-62771138,E-mail:liujian98@mails.
tsinghua.
edu.
cnhttp://www.
hpc.
cs.
tsinghua.
edu.
cnReceived2002-09-25;Accepted2003-03-04LiuJ,WangH,ShenMM,ZhengWM.
Aparalleldebuggerwithfastconditionalbreakpoint.
JournalofSoftware,2003,14(11):1827~1833.
http://www.
jos.
org.
cn/1000-9825/14/1827.
htmAbstract:Afastconditionalbreakpointisconsideredtobeanessentialprocesscontrolcapabilityofadvancedhigh-performanceparalleldebuggers.
Inthispaper,thefundamentalprinciplesforfindingandimplementingfastconditionalbreakpointsareintroducedandthedesignproblemsassociatedwiththeirimplementationssuchascodegeneration,codeinstrumentationandsourceprogrammappingarediscussed.
Dynamiccodeinstrumentation,combinedwithhybridcodegenerationandsourcebreakpointidentification,providesawell-suitedsolutiontothoseproblems.
UsinganenhancedversionoftheDyninstrun-timecodepatchinglibrary,afastconditionalbreakpointinaparalleldebugger,XBUSTER,isimplemented.
ComparedwithGDBexperimentalresultsshowthatXBUSTERcandebugaprogramwithahigherefficiency.
Comparedwithotherfastconditionalbreakpointimplementationsbasedondynamicinstrumentationtechnique,XBUSTERismoreportableandfunctional.
Keywords:debugger;conditionalbreakpoint;dynamicinstrumentation;run-timecodepatching摘要:快速条件断点是高性能并行程序调试器中进程控制必备的功能之一.
分析了快速条件断点基本原理以及快速条件断点设计中需要考虑的代码生成、代码插装和源程序对应等问题.
并针对上述问题,提出了预编译与运行时编译结合的代码生成方式、动态代码插装、源断点标识技术等解决方案.
利用经过改进的动态补丁码工具Dyninst,设计实现了并行程序调试器XBUSTER,并实现了快速条件断点这一重要功能.
测试表明,XBUSTER的执行效率比传统条件断点高.
与现有的基于动态插装的系统,如Ceder,ldb和Dyner相比,XBUSTER具有功能性强、可移植性好等鲜明特点.
关键词:调试器;条件断点;动态插装;动态补丁码中图法分类号:TP311文献标识码:ASupportedbytheNationalNaturalScienceFoundationofChinaunderGrantNo.
69933020(国家自然科学基金)第一作者简介:刘建(1962-),男,湖北宜昌人,博士,高级工程师,主要研究领域为并行程序调试环境,IT项目管理.
1828JournalofSoftware软件学报2003,14(11)条件断点是一种常用的软件调试手段.
使用条件断点时,调试者选择被调试程序控制流中的某一点作为断点位置,提供一个布尔表达式作为断点条件,指定一系列操作作为断点动作.
当被调试程序执行到断点位置并且满足断点条件时,断点动作就会被执行,称为触发断点.
为了明确本文讨论的问题,有必要指出控制断点与数据断点的区别.
控制断点有固定的断点位置,只有在被调试程序执行到断点位置并且满足断点条件的情况下才会被触发.
数据断点没有固定的断点位置,在被调试程序执行过程中,一旦断点条件满足,就会被触发.
本文所讨论的条件断点是一种控制断点.
条件断点常用于检查程序在特定条件下的执行情况,特别适用于在多次循环中寻找满足特定条件的循环.
灵活使用条件断点可以提高调试效率,缩短调试时间.
在这种交互式调试中,快速条件断点可以加快被调试程序的执行速度,缩短调试时间.
条件断点还可用于程序性能测量,例如函数执行时间统计或者语句执行计数.
很多性能指标的测量都要用到条件断点.
这时,断点动作通常是修改计数器或计时器.
在这种非交互式调试中,我们希望条件断点的执行速度越快越好,因为程序性能测量中的一个关键问题就是减少测量代码对程序的干扰.
普通条件断点的执行速度太慢,不能满足性能测量的要求.
因此,快速条件断点在非交互式调试中同样具有很重要的意义.
并行程序具有不确定性,运行环境的干扰是造成并行程序不确定的主要原因,快速条件断点可以降低调试器对并行程序的干扰.
基于上述原因,快速条件断点被认为是高性能并行调试器必须具备的特性之一[1].
清华大学计算机科学与技术系高性能计算技术研究所建造了一个基于LINUX系统的高性能集群计算机系统.
针对并行调试的实际需要,我们实现了一个能够调试PVM或MPI程序、用户界面友好并具有较好移植性的并行程序调试器XBUSTER[2].
在XBUSTER中实现快速条件断点,既可以提高正确性调试的效率,又可以为性能测量打下基础.
1快速条件断点传统条件断点一般利用无条件断点实现:在断点位置设置一条无条件断点指令,当被调试程序执行到该指令时,产生操作系统陷入,控制转移到调试器,调试器检查断点条件,如果条件不满足,调试器就继续运行被调试程序;如果条件满足,调试器就执行断点动作.
从断点执行过程可以清楚地看到这一点:控制从被调试程序转移至调试器,需要一次进程切换.
如果断点条件不满足,恢复被调试程序的执行又需要一次进程切换.
调试器检查断点条件需要访问被调试程序的进程空间,这要通过操作系统提供的调试接口来完成,而这些接口通常是系统调用.
进程切换和系统调用的开销通常都很大,远远超过了检查断点条件和执行断点动作的开销,严重影响了断点的执行速度.
导致进程切换和系统调用的原因是断点条件代码在调试器中执行.
简单地说,快速条件断点的原理就是直接在被调试程序中执行断点代码.
在快速条件断点的执行过程中,由被调试程序中的代码检查断点条件,而不需要切换到调试器.
此外,检查代码可以直接存取被调试程序的数据,不需要通过操作系统调试接口.
仅当断点被触发而且断点动作要求唤醒调试器时,才会产生一次进程切换;如果断点动作不需要唤醒调试器,例如用于非交互式调试,则可以完全避免进程切换.
可见,采用快速条件断点的被调试程序可以在没有调试器干预的情况下运行,直到断点被触发.
因此,快速条件断点的执行速度远远快于传统条件断点.
快速条件断点的设计通常包括3个方面:代码生成(codegeneration)、插装(codeinstrumentation)和源程序对应(sourceprogrammapping).
本节将从以上3个方面,讨论快速条件断点设计的一般问题和实现技术,介绍并行调试器XBUSTER中快速条件断点的设计.
1.
1代码生成代码生成要解决两个问题,即断点描述和断点代码生成.
刘建等:一种具有快速条件断点的并行程序调试器1829断点描述包括断点条件描述和断点动作描述.
断点条件是一个布尔表达式,可以采用类似某种高级语言的布尔表达式来描述.
断点条件描述应该允许使用复杂的布尔表达式.
大多数断点动作可以用程序语句来描述.
此外,还应该提供对一些特殊断点动作的描述,例如:挂起被调试程序的执行,核心内存转储等等.
最近AS9929线路比较火,联通A网,对标电信CN2,HostYun也推出了走联通AS9929线路的VPS主机,基于KVM架构,开设在洛杉矶机房,采用SSD硬盘,分为入门和高带宽型,最高提供500Mbps带宽,可使用9折优惠码,最低每月仅18元起。这是一家成立于2008年的VPS主机品牌,原主机分享组织(hostshare.cn),商家以提供低端廉价VPS产品而广为人知,是小成本投入学习练手首选。...
前几天有关注到Megalayer云服务器提供商有打算在月底的时候新增新加坡机房,这个是继美国、中国香港、菲律宾之外的第四个机房。也有工单询问到官方,新加坡机房有包括CN2国内优化线路和国际带宽,CN2优化线路应该是和菲律宾差不多的。如果我们追求速度和稳定性的中文业务,建议还是选择CN2优化带宽的香港服务器。这里有要到Megalayer新加坡服务器国际带宽的测试服务器,E3-1230配置20M国际带...
水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...