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断点描述包括断点条件描述和断点动作描述.
断点条件是一个布尔表达式,可以采用类似某种高级语言的布尔表达式来描述.
断点条件描述应该允许使用复杂的布尔表达式.
大多数断点动作可以用程序语句来描述.
此外,还应该提供对一些特殊断点动作的描述,例如:挂起被调试程序的执行,核心内存转储等等.
华为云818上云活动活动截止到8月31日。1、秒杀限时区优惠仅限一单!云服务器秒杀价低至0.59折,每日9点开抢秒杀抢购活动仅限早上9点开始,有限量库存的。2G1M云服务器低至首年69元。2、新用户折扣区优惠仅限一单!购云服务器享3折起加购主机安全及数据库。企业和个人的优惠力度和方案是不同的。比如还有.CN域名首年8元。华为云服务器CPU资源正常没有扣量。3、抽奖活动在8.4-8.31日期间注册并...
HostKvm 商家我们算是比较熟悉的国内商家,商家主要还是提供以亚洲数据中心,以及直连海外线路的服务商。这次商家有新增香港和俄罗斯两个机房的高防服务器方案。默认提供30GB防御,且目前半价优惠至4.25美元起步,其他方案的VPS主机还是正常的八折优惠。我们看看优惠活动。香港和俄罗斯半价优惠:2021fall,限购100台。通用优惠码:2021 ,八折优惠全部VPS。我们看看具体的套餐。1、香港高...
使用此源码可以生成QQ自动跳转到浏览器的短链接,无视QQ报毒,任意网址均可生成。新版特色:全新界面,网站背景图采用Bing随机壁纸支持生成多种短链接兼容电脑和手机页面生成网址记录功能,域名黑名单功能网站后台可管理数据安装说明:由于此版本增加了记录和黑名单功能,所以用到了数据库。安装方法为修改config.php里面的数据库信息,导入install.sql到数据库。...