1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569 |
- What has changed in GDB?
- (Organized release by release)
- *** Changes since GDB 12
- * GDB now supports hardware watchpoints on FreeBSD/Aarch64.
- * Remove support for building against Python 2, it is now only possible to
- build GDB against Python 3.
- * DBX mode has been removed.
- * GDB now honours the DWARF prologue_end line-table entry flag the compiler can
- emit to indicate where a breakpoint should be placed to break in a function
- past its prologue.
- * New commands
- maintenance set ignore-prologue-end-flag on|off
- maintenance show ignore-prologue-end-flag
- This setting, which is off by default, controls whether GDB ignores the
- PROLOGUE-END flag from the line-table when skipping prologue. This can be
- used to force GDB to use prologue analyzers if the line-table is constructed
- from erroneous debug information.
- * Changed commands
- maintenance info line-table
- Add a PROLOGUE-END column to the output which indicates that an
- entry corresponds to an address where a breakpoint should be placed
- to be at the first instruction past a function's prologue.
- * Python API
- ** New function gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE),
- that formats ADDRESS as 'address <symbol+offset>', where symbol is
- looked up in PROGSPACE, and ARCHITECTURE is used to format address.
- This is the same format that GDB uses when printing address, symbol,
- and offset information from the disassembler.
- *** Changes in GDB 12
- * DBX mode is deprecated, and will be removed in GDB 13
- * GDB 12 is the last release of GDB that will support building against
- Python 2. From GDB 13, it will only be possible to build GDB itself
- with Python 3 support.
- * Improved C++ template support
- GDB now treats functions/types involving C++ templates like it does function
- overloads. Users may omit parameter lists to set breakpoints on families of
- template functions, including types/functions composed of multiple template types:
- (gdb) break template_func(template_1, int)
- The above will set breakpoints at every function `template_func' where
- the first function parameter is any template type named `template_1' and
- the second function parameter is `int'.
- TAB completion also gains similar improvements.
- * The FreeBSD native target now supports async mode.
- * Configure changes
- --enable-threading
- Enable or disable multithreaded symbol loading. This is enabled
- by default, but passing --disable-threading or --enable-threading=no
- to configure will disable it.
- Disabling this can cause a performance penalty when there are a lot of
- symbols to load, but is useful for debugging purposes.
- * New commands
- maint set backtrace-on-fatal-signal on|off
- maint show backtrace-on-fatal-signal
- This setting is 'on' by default. When 'on' GDB will print a limited
- backtrace to stderr in the situation where GDB terminates with a
- fatal signal. This only supported on some platforms where the
- backtrace and backtrace_symbols_fd functions are available.
- set source open on|off
- show source open
- This setting, which is on by default, controls whether GDB will try
- to open source code files. Switching this off will stop GDB trying
- to open and read source code files, which can be useful if the files
- are located over a slow network connection.
- set varsize-limit
- show varsize-limit
- These are now deprecated aliases for "set max-value-size" and
- "show max-value-size".
- task apply [all | TASK-IDS...] [FLAG]... COMMAND
- Like "thread apply", but applies COMMAND to Ada tasks.
- watch [...] task ID
- Watchpoints can now be restricted to a specific Ada task.
- maint set internal-error backtrace on|off
- maint show internal-error backtrace
- maint set internal-warning backtrace on|off
- maint show internal-warning backtrace
- GDB can now print a backtrace of itself when it encounters either an
- internal-error, or an internal-warning. This is on by default for
- internal-error and off by default for internal-warning.
- set logging on|off
- Deprecated and replaced by "set logging enabled on|off".
- set logging enabled on|off
- show logging enabled
- These commands set or show whether logging is enabled or disabled.
- exit
- You can now exit GDB by using the new command "exit", in addition to
- the existing "quit" command.
- set debug threads on|off
- show debug threads
- Print additional debug messages about thread creation and deletion.
- set debug linux-nat on|off
- show debug linux-nat
- These new commands replaced the old 'set debug lin-lwp' and 'show
- debug lin-lwp' respectively. Turning this setting on prints debug
- messages relating to GDB's handling of native Linux inferiors.
- maint flush source-cache
- Flush the contents of the source code cache.
- maint set gnu-source-highlight enabled on|off
- maint show gnu-source-highlight enabled
- Whether GDB should use the GNU Source Highlight library for adding
- styling to source code. When off, the library will not be used, even
- when available. When GNU Source Highlight isn't used, or can't add
- styling to a particular source file, then the Python Pygments
- library will be used instead.
- set suppress-cli-notifications (on|off)
- show suppress-cli-notifications
- This controls whether printing the notifications is suppressed for CLI.
- CLI notifications occur when you change the selected context
- (i.e., the current inferior, thread and/or the frame), or when
- the program being debugged stops (e.g., because of hitting a
- breakpoint, completing source-stepping, an interrupt, etc.).
- set style disassembler enabled on|off
- show style disassembler enabled
- If GDB is compiled with Python support, and the Python Pygments
- package is available, then, when this setting is on, disassembler
- output will have styling applied.
- set ada source-charset
- show ada source-charset
- Set the character set encoding that is assumed for Ada symbols. Valid
- values for this follow the values that can be passed to the GNAT
- compiler via the '-gnati' option. The default is ISO-8859-1.
- tui layout
- tui focus
- tui refresh
- tui window height
- These are the new names for the old 'layout', 'focus', 'refresh',
- and 'winheight' tui commands respectively. The old names still
- exist as aliases to these new commands.
- tui window width
- winwidth
- The new command 'tui window width', and the alias 'winwidth' allow
- the width of a tui window to be adjusted when windows are laid out
- in horizontal mode.
- set debug tui on|off
- show debug tui
- Control the display of debug output about GDB's tui.
- * Changed commands
- print
- Printing of floating-point values with base-modifying formats like
- /x has been changed to display the underlying bytes of the value in
- the desired base. This was GDB's documented behavior, but was never
- implemented correctly.
- maint packet
- This command can now print a reply, if the reply includes
- non-printable characters. Any non-printable characters are printed
- as escaped hex, e.g. \x?? where '??' is replaces with the value of
- the non-printable character.
- clone-inferior
- The clone-inferior command now ensures that the TTY, CMD and ARGS
- settings are copied from the original inferior to the new one.
- All modifications to the environment variables done using the 'set
- environment' or 'unset environment' commands are also copied to the new
- inferior.
- set debug lin-lwp on|off
- show debug lin-lwp
- These commands have been removed from GDB. The new command 'set
- debug linux-nat' and 'show debug linux-nat' should be used
- instead.
- info win
- This command now includes information about the width of the tui
- windows in its output.
- layout
- focus
- refresh
- winheight
- These commands are now aliases for the 'tui layout', 'tui focus',
- 'tui refresh', and 'tui window height' commands respectively.
- * GDB's Ada parser now supports an extension for specifying the exact
- byte contents of a floating-point literal. This can be useful for
- setting floating-point registers to a precise value without loss of
- precision. The syntax is an extension of the based literal syntax.
- Use, e.g., "16lf#0123abcd#" -- the number of "l"s controls the width
- of the floating-point type, and the "f" is the marker for floating
- point.
- * MI changes
- ** The '-add-inferior' with no option flags now inherits the
- connection of the current inferior, this restores the behaviour of
- GDB as it was prior to GDB 10.
- ** The '-add-inferior' command now accepts a '--no-connection'
- option, which causes the new inferior to start without a
- connection.
- * New targets
- GNU/Linux/LoongArch loongarch*-*-linux*
- * Removed targets
- S+core score-*-*
- * Python API
- ** New function gdb.add_history(), which takes a gdb.Value object
- and adds the value it represents to GDB's history list. An
- integer, the index of the new item in the history list, is
- returned.
- ** New function gdb.history_count(), which returns the number of
- values in GDB's value history.
- ** New gdb.events.gdb_exiting event. This event is called with a
- gdb.GdbExitingEvent object which has the read-only attribute
- 'exit_code', which contains the value of the GDB exit code. This
- event is triggered once GDB decides it is going to exit, but
- before GDB starts to clean up its internal state.
- ** New function gdb.architecture_names(), which returns a list
- containing all of the possible Architecture.name() values. Each
- entry is a string.
- ** New function gdb.Architecture.integer_type(), which returns an
- integer type given a size and a signed-ness.
- ** New gdb.TargetConnection object type that represents a connection
- (as displayed by the 'info connections' command). A sub-class,
- gdb.RemoteTargetConnection, is used to represent 'remote' and
- 'extended-remote' connections.
- ** The gdb.Inferior type now has a 'connection' property which is an
- instance of gdb.TargetConnection, the connection used by this
- inferior. This can be None if the inferior has no connection.
- ** New 'gdb.events.connection_removed' event registry, which emits a
- 'gdb.ConnectionEvent' when a connection is removed from GDB.
- This event has a 'connection' property, a gdb.TargetConnection
- object for the connection being removed.
- ** New gdb.connections() function that returns a list of all
- currently active connections.
- ** New gdb.RemoteTargetConnection.send_packet(PACKET) method. This
- is equivalent to the existing 'maint packet' CLI command; it
- allows a user specified packet to be sent to the remote target.
- ** New function gdb.host_charset(), returns a string, which is the
- name of the current host charset.
- ** New gdb.set_parameter(NAME, VALUE). This sets the gdb parameter
- NAME to VALUE.
- ** New gdb.with_parameter(NAME, VALUE). This returns a context
- manager that temporarily sets the gdb parameter NAME to VALUE,
- then resets it when the context is exited.
- ** The gdb.Value.format_string method now takes a 'styling'
- argument, which is a boolean. When true, the returned string can
- include escape sequences to apply styling. The styling will only
- be present if styling is otherwise turned on in GDB (see 'help
- set styling'). When false, which is the default if the argument
- is not given, then no styling is applied to the returned string.
- ** New read-only attribute gdb.InferiorThread.details, which is
- either a string, containing additional, target specific thread
- state information, or None, if there is no such additional
- information.
- ** New read-only attribute gdb.Type.is_scalar, which is True for
- scalar types, and False for all other types.
- ** New read-only attribute gdb.Type.is_signed. This attribute
- should only be read when Type.is_scalar is True, and will be True
- for signed types, and False for all other types. Attempting to
- read this attribute for non-scalar types will raise a ValueError.
- ** It is now possible to add GDB/MI commands implemented in Python.
- * New features in the GDB remote stub, GDBserver
- ** GDBserver is now supported on OpenRISC GNU/Linux.
- * New native configurations
- GNU/Linux/OpenRISC or1k*-*-linux*
- *** Changes in GDB 11
- * The 'set disassembler-options' command now supports specifying options
- for the ARC target.
- * GDB now supports general memory tagging functionality if the underlying
- architecture supports the proper primitives and hooks. Currently this is
- enabled only for AArch64 MTE.
- This includes:
- - Additional information when the inferior crashes with a SIGSEGV caused by
- a memory tag violation.
- - A new modifier 'm' for the "x" command, which displays allocation tags for a
- particular memory range.
- - Display of memory tag mismatches by "print", for addresses and
- pointers, if memory tagging is supported by the architecture.
- * Building GDB now requires GMP (The GNU Multiple Precision Arithmetic
- Library).
- * MI changes
- ** '-break-insert --qualified' and '-dprintf-insert --qualified'
- The MI -break-insert and -dprintf-insert commands now support a
- new "--qualified" option that makes GDB interpret a specified
- function name as a complete fully-qualified name. This is the
- equivalent of the CLI's "break -qualified" and "dprintf
- -qualified".
- ** '-break-insert --force-condition' and '-dprintf-insert --force-condition'
- The MI -break-insert and -dprintf-insert commands now support a
- '--force-condition' flag to forcibly define a condition even when
- the condition is invalid at all locations of the breakpoint. This
- is equivalent to the '-force-condition' flag of the CLI's "break"
- command.
- ** '-break-condition --force'
- The MI -break-condition command now supports a '--force' flag to
- forcibly define a condition even when the condition is invalid at
- all locations of the selected breakpoint. This is equivalent to
- the '-force' flag of the CLI's "cond" command.
- ** '-file-list-exec-source-files [--group-by-objfile]
- [--basename | --dirname]
- [--] [REGEXP]'
- The existing -file-list-exec-source-files command now takes an
- optional REGEXP which is used to filter the source files that are
- included in the results.
- By default REGEXP is matched against the full filename of the
- source file. When one of --basename or --dirname is given then
- REGEXP is only matched against the specified part of the full
- source filename.
- When the optional --group-by-objfile flag is used the output
- format is changed, the results are now a list of object files
- (executable and libraries) with the source files that are
- associated with each object file.
- The results from -file-list-exec-source-files now include a
- 'debug-fully-read' field which takes the value 'true' or 'false'.
- A 'true' value indicates the source file is from a compilation
- unit that has had its debug information fully read in by GDB, a
- value of 'false' indicates GDB has only performed a partial scan
- of the debug information so far.
- * GDB now supports core file debugging for x86_64 Cygwin programs.
- * GDB will now look for the .gdbinit file in a config directory before
- looking for ~/.gdbinit. The file is searched for in the following
- locations: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit,
- $HOME/.gdbinit. On Apple hosts the search order is instead:
- $HOME/Library/Preferences/gdb/gdbinit, $HOME/.gdbinit.
- * GDB now supports fixed point types which are described in DWARF
- as base types with a fixed-point encoding. Additionally, support
- for the DW_AT_GNU_numerator and DW_AT_GNU_denominator has also
- been added.
- For Ada, this allows support for fixed point types without requiring
- the use of the GNAT encoding (based on information added to the type's
- name following a GNAT-specific format).
- * GDB will now load and process commands from ~/.config/gdb/gdbearlyinit
- or ~/.gdbearlyinit if these files are present. These files are
- processed earlier than any of the other initialization files and
- can affect parts of GDB's startup that previously had already been
- completed before the initialization files were read, for example
- styling of the initial GDB greeting.
- * GDB now has two new options "--early-init-command" and
- "--early-init-eval-command" with corresponding short options "-eix"
- and "-eiex" that allow options (that would normally appear in a
- gdbearlyinit file) to be passed on the command line.
- * For RISC-V targets, the target feature "org.gnu.gdb.riscv.vector" is
- now understood by GDB, and can be used to describe the vector
- registers of a target. The precise requirements of this register
- feature are documented in the GDB manual.
- * For ARM targets, the "org.gnu.gdb.arm.m-profile-mve" feature is now
- supported by GDB and describes a new VPR register from the ARM MVE
- (Helium) extension. See the GDB manual for more information.
- * TUI improvements
- ** TUI windows now support mouse actions. The mouse wheel scrolls
- the appropriate window.
- ** Key combinations that do not have a specific action on the
- focused window are passed to GDB. For example, you now can use
- Ctrl-Left/Ctrl-Right to move between words in the command window
- regardless of which window is in focus. Previously you would
- need to focus on the command window for such key combinations to
- work.
- * New commands
- set debug event-loop
- show debug event-loop
- Control the display of debug output about GDB's event loop.
- set print memory-tag-violations
- show print memory-tag-violations
- Control whether to display additional information about memory tag violations
- when printing pointers and addresses. Architecture support for memory
- tagging is required for this option to have an effect.
- maintenance flush symbol-cache
- maintenance flush register-cache
- These new commands are equivalent to the already existing commands
- 'maintenance flush-symbol-cache' and 'flushregs' respectively.
- maintenance flush dcache
- A new command to flush the dcache.
- maintenance info target-sections
- Print GDB's internal target sections table.
- maintenance info jit
- Print the JIT code objects in the inferior known to GDB.
- memory-tag show-logical-tag POINTER
- Print the logical tag for POINTER.
- memory-tag with-logical-tag POINTER TAG
- Print POINTER with logical tag TAG.
- memory-tag show-allocation-tag ADDRESS
- Print the allocation tag for ADDRESS.
- memory-tag set-allocation-tag ADDRESS LENGTH TAGS
- Set the allocation tag for [ADDRESS, ADDRESS + LENGTH) to TAGS.
- memory-tag check POINTER
- Validate that POINTER's logical tag matches the allocation tag.
- set startup-quietly on|off
- show startup-quietly
- When 'on', this causes GDB to act as if "-silent" were passed on the
- command line. This command needs to be added to an early
- initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to
- affect GDB.
- set print type hex on|off
- show print type hex
- When 'on', the 'ptype' command uses hexadecimal notation to print sizes
- and offsets of struct members. When 'off', decimal notation is used.
- set python ignore-environment on|off
- show python ignore-environment
- When 'on', this causes GDB's builtin Python to ignore any
- environment variables that would otherwise affect how Python
- behaves. This command needs to be added to an early initialization
- file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB.
- set python dont-write-bytecode auto|on|off
- show python dont-write-bytecode
- When 'on', this causes GDB's builtin Python to not write any
- byte-code (.pyc files) to disk. This command needs to be added to
- an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in
- order to affect GDB. When 'off' byte-code will always be written.
- When set to 'auto' (the default) Python will check the
- PYTHONDONTWRITEBYTECODE environment variable.
- * Changed commands
- break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]
- [-force-condition] [if CONDITION]
- This command would previously refuse setting a breakpoint if the
- CONDITION expression is invalid at a location. It now accepts and
- defines the breakpoint if there is at least one location at which
- the CONDITION is valid. The locations for which the CONDITION is
- invalid, are automatically disabled. If CONDITION is invalid at all
- of the locations, setting the breakpoint is still rejected. However,
- the '-force-condition' flag can be used in this case for forcing GDB to
- define the breakpoint, making all the current locations automatically
- disabled. This may be useful if the user knows the condition will
- become meaningful at a future location, e.g. due to a shared library
- load.
- condition [-force] N COND
- The behavior of this command is changed the same way for the 'break'
- command as explained above. The '-force' flag can be used to force
- GDB into defining the condition even when COND is invalid for all the
- current locations of breakpoint N.
- flushregs
- maintenance flush-symbol-cache
- These commands are deprecated in favor of the new commands
- 'maintenance flush register-cache' and 'maintenance flush
- symbol-cache' respectively.
- set style version foreground COLOR
- set style version background COLOR
- set style version intensity VALUE
- Control the styling of GDB's version number text.
- inferior [ID]
- When the ID parameter is omitted, then this command prints information
- about the current inferior. When the ID parameter is present, the
- behavior of the command is unchanged and have the inferior ID become
- the current inferior.
- maintenance info sections
- The ALLOBJ keyword has been replaced with an -all-objects command
- line flag. It is now possible to filter which sections are printed
- even when -all-objects is passed.
- ptype[/FLAGS] TYPE | EXPRESSION
- The 'ptype' command has two new flags. When '/x' is set, hexadecimal
- notation is used when printing sizes and offsets of struct members.
- When '/d' is set, decimal notation is used when printing sizes and
- offsets of struct members. Default behavior is given by 'show print
- type hex'.
- info sources
- The info sources command output has been restructured. The results
- are now based around a list of objfiles (executable and libraries),
- and for each objfile the source files that are part of that objfile
- are listed.
- * Removed targets and native configurations
- ARM Symbian arm*-*-symbianelf*
- * New remote packets
- qMemTags
- Request the remote to send allocation tags for a particular memory range.
- QMemTags
- Request the remote to store the specified allocation tags to the requested
- memory range.
- * Guile API
- ** Improved support for rvalue reference values:
- TYPE_CODE_RVALUE_REF is now exported as part of the API and the
- value-referenced-value procedure now handles rvalue reference
- values.
- ** New procedures for obtaining value variants:
- value-reference-value, value-rvalue-reference-value and
- value-const-value.
- ** Temporary breakpoints can now be created with make-breakpoint and
- tested for using breakpoint-temporary?.
- * Python API
- ** Inferior objects now contain a read-only 'connection_num' attribute that
- gives the connection number as seen in 'info connections' and
- 'info inferiors'.
- ** New method gdb.Frame.level() which returns the stack level of the
- frame object.
- ** New method gdb.PendingFrame.level() which returns the stack level
- of the frame object.
- ** When hitting a catchpoint, the Python API will now emit a
- gdb.BreakpointEvent rather than a gdb.StopEvent. The
- gdb.Breakpoint attached to the event will have type BP_CATCHPOINT.
- ** Python TUI windows can now receive mouse click events. If the
- Window object implements the click method, it is called for each
- mouse click event in this window.
- *** Changes in GDB 10
- * There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
- and "org.gnu.gdb.arc.aux". The old names are still supported but
- must be considered obsolete. They will be deprecated after some
- grace period.
- * Help and apropos commands will now show the documentation of a
- command only once, even if that command has one or more aliases.
- These commands now show the command name, then all of its aliases,
- and finally the description of the command.
- * 'help aliases' now shows only the user defined aliases. GDB predefined
- aliases are shown together with their aliased command.
- * GDB now supports debuginfod, an HTTP server for distributing ELF/DWARF
- debugging information as well as source code.
- When built with debuginfod, GDB can automatically query debuginfod
- servers for the separate debug files and source code of the executable
- being debugged.
- To build GDB with debuginfod, pass --with-debuginfod to configure (this
- requires libdebuginfod, the debuginfod client library).
- debuginfod is distributed with elfutils, starting with version 0.178.
- You can get the latest version from https://sourceware.org/elfutils.
- * Multi-target debugging support
- GDB now supports debugging multiple target connections
- simultaneously. For example, you can now have each inferior
- connected to different remote servers running in different machines,
- or have one inferior debugging a local native process, an inferior
- debugging a core dump, etc.
- This support is experimental and comes with some limitations -- you
- can only resume multiple targets simultaneously if all targets
- support non-stop mode, and all remote stubs or servers must support
- the same set of remote protocol features exactly. See also "info
- connections" and "add-inferior -no-connection" below, and "maint set
- target-non-stop" in the user manual.
- * New features in the GDB remote stub, GDBserver
- ** GDBserver is now supported on ARC GNU/Linux.
- ** GDBserver is now supported on RISC-V GNU/Linux.
- ** GDBserver no longer supports these host triplets:
- i[34567]86-*-lynxos*
- powerpc-*-lynxos*
- i[34567]86-*-nto*
- bfin-*-*linux*
- crisv32-*-linux*
- cris-*-linux*
- m32r*-*-linux*
- tilegx-*-linux*
- arm*-*-mingw32ce*
- i[34567]86-*-mingw32ce*
- * Debugging MS-Windows processes now sets $_exitsignal when the
- inferior is terminated by a signal, instead of setting $_exitcode.
- * Multithreaded symbol loading has now been enabled by default on systems
- that support it (see entry for GDB 9, below), providing faster
- performance for programs with many symbols.
- * The $_siginfo convenience variable now also works on Windows targets,
- and will display the EXCEPTION_RECORD of the last handled exception.
- * TUI windows can now be arranged horizontally.
- * The command history filename can now be set to the empty string
- either using 'set history filename' or by setting 'GDBHISTFILE=' in
- the environment. The effect of setting this filename to the empty
- string is that GDB will not try to load any previous command
- history.
- * On Windows targets, it is now possible to debug 32-bit programs with a
- 64-bit GDB.
- * New commands
- set exec-file-mismatch -- Set exec-file-mismatch handling (ask|warn|off).
- show exec-file-mismatch -- Show exec-file-mismatch handling (ask|warn|off).
- Set or show the option 'exec-file-mismatch'. When GDB attaches to a
- running process, this new option indicates whether to detect
- a mismatch between the current executable file loaded by GDB and the
- executable file used to start the process. If 'ask', the default,
- display a warning and ask the user whether to load the process
- executable file; if 'warn', just display a warning; if 'off', don't
- attempt to detect a mismatch.
- tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT]...
- Define a new TUI layout, specifying its name and the windows that
- will be displayed.
- maintenance print xml-tdesc [FILE]
- Prints the current target description as an XML document. If the
- optional FILE is provided (which is an XML target description) then
- the target description is read from FILE into GDB, and then
- reprinted.
- maintenance print core-file-backed-mappings
- Prints file-backed mappings loaded from a core file's note section.
- Output is expected to be similar to that of "info proc mappings".
- set debug fortran-array-slicing on|off
- show debug fortran-array-slicing
- Print debugging when taking slices of Fortran arrays.
- set fortran repack-array-slices on|off
- show fortran repack-array-slices
- When taking slices from Fortran arrays and strings, if the slice is
- non-contiguous within the original value then, when this option is
- on, the new value will be repacked into a single contiguous value.
- When this option is off, then the value returned will consist of a
- descriptor that describes the slice within the memory of the
- original parent value.
- * Changed commands
- alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]
- The alias command can now specify default args for an alias.
- GDB automatically prepends the alias default args to the argument list
- provided explicitly by the user.
- For example, to have a backtrace with full details, you can define
- an alias 'bt_ALL' as
- 'alias bt_ALL = backtrace -entry-values both -frame-arg all
- -past-main -past-entry -full'.
- Alias default arguments can also use a set of nested 'with' commands,
- e.g. 'alias pp10 = with print pretty -- with print elem 10 -- print'
- defines the alias pp10 that will pretty print a maximum of 10 elements
- of the given expression (if the expression is an array).
- * New targets
- GNU/Linux/RISC-V (gdbserver) riscv*-*-linux*
- BPF bpf-unknown-none
- Z80 z80-unknown-*
- * Python API
- ** gdb.register_window_type can be used to implement new TUI windows
- in Python.
- ** Dynamic types can now be queried. gdb.Type has a new attribute,
- "dynamic", and gdb.Type.sizeof can be None for a dynamic type. A
- field of a dynamic type may have None for its "bitpos" attribute
- as well.
- ** Commands written in Python can be in the "TUI" help class by
- registering with the new constant gdb.COMMAND_TUI.
- ** New method gdb.PendingFrame.architecture () to retrieve the
- architecture of the pending frame.
- ** New gdb.Architecture.registers method that returns a
- gdb.RegisterDescriptorIterator object, an iterator that returns
- gdb.RegisterDescriptor objects. The new RegisterDescriptor is a
- way to query the registers available for an architecture.
- ** New gdb.Architecture.register_groups method that returns a
- gdb.RegisterGroupIterator object, an iterator that returns
- gdb.RegisterGroup objects. The new RegisterGroup is a way to
- discover the available register groups.
- * Guile API
- ** GDB can now be built with GNU Guile 3.0 and 2.2 in addition to 2.0.
- ** Procedures 'memory-port-read-buffer-size',
- 'set-memory-port-read-buffer-size!', 'memory-port-write-buffer-size',
- and 'set-memory-port-write-buffer-size!' are deprecated. When
- using Guile 2.2 and later, users who need to control the size of
- a memory port's internal buffer can use the 'setvbuf' procedure.
- *** Changes in GDB 9
- * 'thread-exited' event is now available in the annotations interface.
- * New built-in convenience variables $_gdb_major and $_gdb_minor
- provide the GDB version. They are handy for conditionally using
- features available only in or since specific GDB versions, in
- scripts that should work error-free with many different versions,
- such as in system-wide init files.
- * New built-in convenience functions $_gdb_setting, $_gdb_setting_str,
- $_gdb_maint_setting and $_gdb_maint_setting_str provide access to values
- of the GDB settings and the GDB maintenance settings. They are handy
- for changing the logic of user defined commands depending on the
- current GDB settings.
- * GDB now supports Thread Local Storage (TLS) variables on several
- FreeBSD architectures (amd64, i386, powerpc, riscv). Other
- architectures require kernel changes. TLS is not yet supported for
- amd64 and i386 process core dumps.
- * Support for Pointer Authentication (PAC) on AArch64 Linux. Return
- addresses that required unmasking are shown in the backtrace with the
- postfix [PAC].
- * Two new convenience functions $_cimag and $_creal that extract the
- imaginary and real parts respectively from complex numbers.
- * New built-in convenience variables $_shell_exitcode and $_shell_exitsignal
- provide the exitcode or exit status of the shell commands launched by
- GDB commands such as "shell", "pipe" and "make".
- * The command define-prefix can now define user defined prefix commands.
- User defined commands can now be defined using these user defined prefix
- commands.
- * Command names can now use the . character.
- * The RX port now supports XML target descriptions.
- * GDB now shows the Ada task names at more places, e.g. in task switching
- messages.
- * GDB can now be compiled with Python 3 on Windows.
- * New convenience variable $_ada_exception holds the address of the
- Ada exception being thrown. This is set by Ada-related catchpoints.
- * GDB can now place breakpoints on nested functions and subroutines in
- Fortran code. The '::' operator can be used between parent and
- child scopes when placing breakpoints, for example:
- (gdb) break outer_function::inner_function
- The 'outer_function::' prefix is only needed if 'inner_function' is
- not visible in the current scope.
- * In addition to the system-wide gdbinit file, if configured with
- --with-system-gdbinit-dir, GDB will now also load files in that directory
- as system gdbinit files, unless the -nx or -n flag is provided. Files
- with extensions .gdb, .py and .scm are supported as long as GDB was
- compiled with support for that language.
- * GDB now supports multithreaded symbol loading for higher performance.
- This feature is still in testing, so it is disabled by default. You
- can turn it on using 'maint set worker-threads unlimited'.
- * Python API
- ** The gdb.Value type has a new method 'format_string' which returns a
- string representing the value. The formatting is controlled by the
- optional keyword arguments: 'raw', 'pretty_arrays', 'pretty_structs',
- 'array_indexes', 'symbols', 'unions', 'deref_refs', 'actual_objects',
- 'static_members', 'max_elements', 'repeat_threshold', and 'format'.
- ** gdb.Type has a new property 'objfile' which returns the objfile the
- type was defined in.
- ** The frame information printed by the python frame filtering code
- is now consistent with what the 'backtrace' command prints when
- there are no filters, or when the 'backtrace' '-no-filters' option
- is given.
- ** The new function gdb.lookup_static_symbol can be used to look up
- symbols with static linkage.
- ** The new function gdb.lookup_static_symbols can be used to look up
- all static symbols with static linkage.
- ** gdb.Objfile has new methods 'lookup_global_symbol' and
- 'lookup_static_symbol' to lookup a symbol from this objfile only.
- ** gdb.Block now supports the dictionary syntax for accessing symbols in
- this block (e.g. block['local_variable']).
- * New commands
- | [COMMAND] | SHELL_COMMAND
- | -d DELIM COMMAND DELIM SHELL_COMMAND
- pipe [COMMAND] | SHELL_COMMAND
- pipe -d DELIM COMMAND DELIM SHELL_COMMAND
- Executes COMMAND and sends its output to SHELL_COMMAND.
- With no COMMAND, repeat the last executed command
- and send its output to SHELL_COMMAND.
- define-prefix COMMAND
- Define or mark a command as a user-defined prefix command.
-
- with SETTING [VALUE] [-- COMMAND]
- w SETTING [VALUE] [-- COMMAND]
- Temporarily set SETTING, run COMMAND, and restore SETTING.
- Usage: with SETTING -- COMMAND
- With no COMMAND, repeats the last executed command.
- SETTING is any GDB setting you can change with the "set"
- subcommands. For example, 'with language c -- print someobj'
- temporarily switches to the C language in order to print someobj.
- Settings can be combined: 'w lang c -- w print elements unlimited --
- usercmd' switches to the C language and runs usercmd with no limit
- of array elements to print.
- maint with SETTING [VALUE] [-- COMMAND]
- Like "with", but works with "maintenance set" settings.
- set may-call-functions [on|off]
- show may-call-functions
- This controls whether GDB will attempt to call functions in
- the program, such as with expressions in the print command. It
- defaults to on. Calling functions in the program being debugged
- can have undesired side effects. It is now possible to forbid
- such function calls. If function calls are forbidden, GDB will throw
- an error when a command (such as print expression) calls a function
- in the program.
- set print finish [on|off]
- show print finish
- This controls whether the `finish' command will display the value
- that is returned by the current function. When `off', the value is
- still entered into the value history, but it is not printed. The
- default is `on'.
- set print max-depth
- show print max-depth
- Allows deeply nested structures to be simplified when printing by
- replacing deeply nested parts (beyond the max-depth) with ellipses.
- The default max-depth is 20, but this can be set to unlimited to get
- the old behavior back.
- set print raw-values [on|off]
- show print raw-values
- By default, GDB applies the enabled pretty printers when printing a
- value. This allows to ignore the enabled pretty printers for a series
- of commands. The default is 'off'.
- set logging debugredirect [on|off]
- By default, GDB debug output will go to both the terminal and the logfile.
- Set if you want debug output to go only to the log file.
- set style title foreground COLOR
- set style title background COLOR
- set style title intensity VALUE
- Control the styling of titles.
- set style highlight foreground COLOR
- set style highlight background COLOR
- set style highlight intensity VALUE
- Control the styling of highlightings.
- maint set worker-threads
- maint show worker-threads
- Control the number of worker threads that can be used by GDB. The
- default is 0. "unlimited" lets GDB choose a number that is
- reasonable. Currently worker threads are only used when demangling
- the names of linker symbols.
- set style tui-border foreground COLOR
- set style tui-border background COLOR
- Control the styling of TUI borders.
- set style tui-active-border foreground COLOR
- set style tui-active-border background COLOR
- Control the styling of the active TUI border.
- maint set test-settings KIND
- maint show test-settings KIND
- A set of commands used by the testsuite for exercising the settings
- infrastructure.
- maint set tui-resize-message [on|off]
- maint show tui-resize-message
- Control whether GDB prints a message each time the terminal is
- resized when in TUI mode. This is primarily useful for testing the
- TUI.
- set print frame-info [short-location|location|location-and-address
- |source-and-location|source-line|auto]
- show print frame-info
- This controls what frame information is printed by the commands printing
- a frame. This setting will e.g. influence the behaviour of 'backtrace',
- 'frame', 'stepi'. The python frame filtering also respect this setting.
- The 'backtrace' '-frame-info' option can override this global setting.
- set tui compact-source
- show tui compact-source
- Enable the "compact" display mode for the TUI source window. The
- compact display uses only as much space as is needed for the line
- numbers in the current file, and only a single space to separate the
- line numbers from the source.
- info modules [-q] [REGEXP]
- Return a list of Fortran modules matching REGEXP, or all modules if
- no REGEXP is given.
- info module functions [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP]
- Return a list of functions within all modules, grouped by module.
- The list of functions can be restricted with the optional regular
- expressions. MODULE_REGEXP matches against the module name,
- TYPE_REGEXP matches against the function type signature, and REGEXP
- matches against the function name.
- info module variables [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP]
- Return a list of variables within all modules, grouped by module.
- The list of variables can be restricted with the optional regular
- expressions. MODULE_REGEXP matches against the module name,
- TYPE_REGEXP matches against the variable type, and REGEXP matches
- against the variable name.
- set debug remote-packet-max-chars
- show debug remote-packet-max-chars
- Controls the number of characters to output in a remote packet when using
- "set debug remote".
- The default is 512 bytes.
- info connections
- Lists the target connections currently in use.
- * Changed commands
- help
- The "help" command uses the title style to enhance the
- readibility of its output by styling the classes and
- command names.
- apropos [-v] REGEXP
- Similarly to "help", the "apropos" command also uses the
- title style for the command names. "apropos" accepts now
- a flag "-v" (verbose) to show the full documentation
- of matching commands and to use the highlight style to mark
- the documentation parts matching REGEXP.
- printf
- eval
- The GDB printf and eval commands can now print C-style and Ada-style
- string convenience variables without calling functions in the program.
- This allows to do formatted printing of strings without having
- a running inferior, or when debugging a core dump.
- info sources [-dirname | -basename] [--] [REGEXP]
- This command has now optional arguments to only print the files
- whose names match REGEXP. The arguments -dirname and -basename
- allow to restrict matching respectively to the dirname and basename
- parts of the files.
- show style
- The "show style" and its subcommands are now styling
- a style name in their output using its own style, to help
- the user visualize the different styles.
- set print frame-arguments
- The new value 'presence' indicates to only indicate the presence of
- arguments using ..., instead of printing argument names and values.
- set print raw-frame-arguments
- show print raw-frame-arguments
- These commands replace the similarly-named "set/show print raw
- frame-arguments" commands (now with a dash instead of a space). The
- old commands are now deprecated and may be removed in a future
- release.
- add-inferior [-no-connection]
- The add-inferior command now supports a "-no-connection" flag that
- makes the new inferior start with no target connection associated.
- By default, the new inferior inherits the target connection of the
- current inferior. See also "info connections".
- info inferior
- This command's output now includes a new "Connection" column
- indicating which target connection an inferior is bound to. See
- "info connections" above.
- maint test-options require-delimiter
- maint test-options unknown-is-error
- maint test-options unknown-is-operand
- maint show test-options-completion-result
- Commands used by the testsuite to validate the command options
- framework.
- focus, winheight, +, -, >, <
- These commands are now case-sensitive.
- * New command options, command completion
- GDB now has a standard infrastructure to support dash-style command
- options ('-OPT'). One benefit is that commands that use it can
- easily support completion of command line arguments. Try "CMD
- -[TAB]" or "help CMD" to find options supported by a command. Over
- time, we intend to migrate most commands to this infrastructure. A
- number of commands got support for new command options in this
- release:
- ** The "print" and "compile print" commands now support a number of
- options that allow overriding relevant global print settings as
- set by "set print" subcommands:
- -address [on|off]
- -array [on|off]
- -array-indexes [on|off]
- -elements NUMBER|unlimited
- -null-stop [on|off]
- -object [on|off]
- -pretty [on|off]
- -raw-values [on|off]
- -repeats NUMBER|unlimited
- -static-members [on|off]
- -symbol [on|off]
- -union [on|off]
- -vtbl [on|off]
- Note that because the "print"/"compile print" commands accept
- arbitrary expressions which may look like options (including
- abbreviations), if you specify any command option, then you must
- use a double dash ("--") to mark the end of argument processing.
- ** The "backtrace" command now supports a number of options that
- allow overriding relevant global print settings as set by "set
- backtrace" and "set print" subcommands:
- -entry-values no|only|preferred|if-needed|both|compact|default
- -frame-arguments all|scalars|none
- -raw-frame-arguments [on|off]
- -frame-info auto|source-line|location|source-and-location
- |location-and-address|short-location
- -past-main [on|off]
- -past-entry [on|off]
- In addition, the full/no-filters/hide qualifiers are now also
- exposed as command options too:
- -full
- -no-filters
- -hide
- ** The "frame apply", "tfaas" and "faas" commands similarly now
- support the following options:
- -past-main [on|off]
- -past-entry [on|off]
- ** The new "info sources" options -dirname and -basename options
- are using the standard '-OPT' infrastructure.
- All options above can also be abbreviated. The argument of boolean
- (on/off) options can be 0/1 too, and also the argument is assumed
- "on" if omitted. This allows writing compact command invocations,
- like for example:
- (gdb) p -ra -p -o 0 -- *myptr
- The above is equivalent to:
- (gdb) print -raw-values -pretty -object off -- *myptr
- ** The "info types" command now supports the '-q' flag to disable
- printing of some header information in a similar fashion to "info
- variables" and "info functions".
- ** The "info variables", "info functions", and "whereis" commands
- now take a '-n' flag that excludes non-debug symbols (symbols
- from the symbol table, not from the debug info such as DWARF)
- from the results.
- * Completion improvements
- ** GDB can now complete the options of the "thread apply all" and
- "taas" commands, and their "-ascending" option can now be
- abbreviated.
- ** GDB can now complete the options of the "info threads", "info
- functions", "info variables", "info locals", and "info args"
- commands.
- ** GDB can now complete the options of the "compile file" and
- "compile code" commands. The "compile file" command now
- completes on filenames.
- ** GDB can now complete the backtrace command's
- "full/no-filters/hide" qualifiers.
- * In settings, you can now abbreviate "unlimited".
- E.g., "set print elements u" is now equivalent to "set print
- elements unlimited".
- * New MI commands
- -complete
- This lists all the possible completions for the rest of the line, if it
- were to be given as a command itself. This is intended for use by MI
- frontends in cases when separate CLI and MI channels cannot be used.
- -catch-throw, -catch-rethrow, and -catch-catch
- These can be used to catch C++ exceptions in a similar fashion to
- the CLI commands 'catch throw', 'catch rethrow', and 'catch catch'.
- -symbol-info-functions, -symbol-info-types, and -symbol-info-variables
- These commands are the MI equivalent of the CLI commands 'info
- functions', 'info types', and 'info variables' respectively.
- -symbol-info-modules, this is the MI equivalent of the CLI 'info
- modules' command.
- -symbol-info-module-functions and -symbol-info-module-variables.
- These commands are the MI equivalent of the CLI commands 'info
- module functions' and 'info module variables'.
- * Other MI changes
- ** The default version of the MI interpreter is now 3 (-i=mi3).
- ** The output of information about multi-location breakpoints (which is
- syntactically incorrect in MI 2) has changed in MI 3. This affects
- the following commands and events:
- - -break-insert
- - -break-info
- - =breakpoint-created
- - =breakpoint-modified
- The -fix-multi-location-breakpoint-output command can be used to enable
- this behavior with previous MI versions.
- ** Backtraces and frames include a new optional field addr_flags which is
- given after the addr field. On AArch64 this contains PAC if the address
- has been masked in the frame. On all other targets the field is not
- present.
- * Testsuite
- The testsuite now creates the files gdb.cmd (containing the arguments
- used to launch GDB) and gdb.in (containing all the commands sent to
- GDB) in the output directory for each test script. Multiple invocations
- are appended with .1, .2, .3 etc.
- * Building GDB and GDBserver now requires GNU make >= 3.82.
- Using another implementation of the make program or an earlier version of
- GNU make to build GDB or GDBserver is not supported.
- * Building GDB now requires GNU readline >= 7.0.
- GDB now bundles GNU readline 8.0, but if you choose to use
- --with-system-readline, only readline >= 7.0 can be used.
- * The TUI SingleKey keymap is now named "SingleKey". This can be used
- from .inputrc to bind keys in this keymap. This feature is only
- available when gdb is built against GNU readline 8.0 or later.
- * Removed targets and native configurations
- GDB no longer supports debugging the Cell Broadband Engine. This includes
- both debugging standalone Cell/B.E. SPU applications and integrated debugging
- of Cell/B.E. applications that use both the PPU and SPU architectures.
- * New Simulators
- TI PRU pru-*-elf
- * Removed targets and native configurations
- Solaris 10 i?86-*-solaris2.10, x86_64-*-solaris2.10,
- sparc*-*-solaris2.10
- *** Changes in GDB 8.3
- * GDB and GDBserver now support access to additional registers on
- PowerPC GNU/Linux targets: PPR, DSCR, TAR, EBB/PMU registers, and
- HTM registers.
- * GDB now has experimental support for the compilation and injection of
- C++ source code into the inferior. This beta release does not include
- support for several language features, such as templates, constructors,
- and operators.
- This feature requires GCC 7.1 or higher built with libcp1.so
- (the C++ plug-in).
- * GDB and GDBserver now support IPv6 connections. IPv6 addresses
- can be passed using the '[ADDRESS]:PORT' notation, or the regular
- 'ADDRESS:PORT' method.
- * DWARF index cache: GDB can now automatically save indices of DWARF
- symbols on disk to speed up further loading of the same binaries.
- * Ada task switching is now supported on aarch64-elf targets when
- debugging a program using the Ravenscar Profile. For more information,
- see the "Tasking Support when using the Ravenscar Profile" section
- in the GDB user manual.
- * GDB in batch mode now exits with status 1 if the last command to be
- executed failed.
- * The RISC-V target now supports target descriptions.
- * System call catchpoints now support system call aliases on FreeBSD.
- When the ABI of a system call changes in FreeBSD, this is
- implemented by leaving a compatibility system call using the old ABI
- at the existing number and allocating a new system call number for
- the new ABI. For example, FreeBSD 12 altered the layout of 'struct
- kevent' used by the 'kevent' system call. As a result, FreeBSD 12
- kernels ship with both 'kevent' and 'freebsd11_kevent' system calls.
- The 'freebsd11_kevent' system call is assigned an alias of 'kevent'
- so that a system call catchpoint for the 'kevent' system call will
- catch invocations of both the 'kevent' and 'freebsd11_kevent'
- binaries. This ensures that 'kevent' system calls are caught for
- binaries using either the old or new ABIs.
- * Terminal styling is now available for the CLI and the TUI. GNU
- Source Highlight can additionally be used to provide styling of
- source code snippets. See the "set style" commands, below, for more
- information.
- * Removed support for old demangling styles arm, edg, gnu, hp and
- lucid.
- * New commands
- set debug compile-cplus-types
- show debug compile-cplus-types
- Control the display of debug output about type conversion in the
- C++ compile feature. Commands have no effect while compiling
- for other languages.
- set debug skip
- show debug skip
- Control whether debug output about files/functions skipping is
- displayed.
- frame apply [all | COUNT | -COUNT | level LEVEL...] [FLAG]... COMMAND
- Apply a command to some frames.
- FLAG arguments allow to control what output to produce and how to handle
- errors raised when applying COMMAND to a frame.
- taas COMMAND
- Apply a command to all threads (ignoring errors and empty output).
- Shortcut for 'thread apply all -s COMMAND'.
- faas COMMAND
- Apply a command to all frames (ignoring errors and empty output).
- Shortcut for 'frame apply all -s COMMAND'.
- tfaas COMMAND
- Apply a command to all frames of all threads (ignoring errors and empty
- output).
- Shortcut for 'thread apply all -s frame apply all -s COMMAND'.
- maint set dwarf unwinders (on|off)
- maint show dwarf unwinders
- Control whether DWARF unwinders can be used.
- info proc files
- Display a list of open files for a process.
- * Changed commands
- Changes to the "frame", "select-frame", and "info frame" CLI commands.
- These commands all now take a frame specification which
- is either a frame level, or one of the keywords 'level', 'address',
- 'function', or 'view' followed by a parameter. Selecting a frame by
- address, or viewing a frame outside the current backtrace now
- requires the use of a keyword. Selecting a frame by level is
- unchanged. The MI comment "-stack-select-frame" is unchanged.
- target remote FILENAME
- target extended-remote FILENAME
- If FILENAME is a Unix domain socket, GDB will attempt to connect
- to this socket instead of opening FILENAME as a character device.
- info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]
- info functions [-q] [-t TYPEREGEXP] [NAMEREGEXP]
- info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]
- info variables [-q] [-t TYPEREGEXP] [NAMEREGEXP]
- These commands can now print only the searched entities
- matching the provided regexp(s), giving a condition
- on the entity names or entity types. The flag -q disables
- printing headers or informations messages.
- info functions
- info types
- info variables
- rbreak
- These commands now determine the syntax for the shown entities
- according to the language chosen by `set language'. In particular,
- `set language auto' means to automatically choose the language of
- the shown entities.
- thread apply [all | COUNT | -COUNT] [FLAG]... COMMAND
- The 'thread apply' command accepts new FLAG arguments.
- FLAG arguments allow to control what output to produce and how to handle
- errors raised when applying COMMAND to a thread.
- set tui tab-width NCHARS
- show tui tab-width NCHARS
- "set tui tab-width" replaces the "tabset" command, which has been deprecated.
- set style enabled [on|off]
- show style enabled
- Enable or disable terminal styling. Styling is enabled by default
- on most hosts, but disabled by default when in batch mode.
- set style sources [on|off]
- show style sources
- Enable or disable source code styling. Source code styling is
- enabled by default, but only takes effect if styling in general is
- enabled, and if GDB was linked with GNU Source Highlight.
- set style filename foreground COLOR
- set style filename background COLOR
- set style filename intensity VALUE
- Control the styling of file names.
- set style function foreground COLOR
- set style function background COLOR
- set style function intensity VALUE
- Control the styling of function names.
- set style variable foreground COLOR
- set style variable background COLOR
- set style variable intensity VALUE
- Control the styling of variable names.
- set style address foreground COLOR
- set style address background COLOR
- set style address intensity VALUE
- Control the styling of addresses.
- * MI changes
- ** The '-data-disassemble' MI command now accepts an '-a' option to
- disassemble the whole function surrounding the given program
- counter value or function name. Support for this feature can be
- verified by using the "-list-features" command, which should
- contain "data-disassemble-a-option".
- ** Command responses and notifications that include a frame now include
- the frame's architecture in a new "arch" attribute.
- * New native configurations
- GNU/Linux/RISC-V riscv*-*-linux*
- FreeBSD/riscv riscv*-*-freebsd*
- * New targets
- GNU/Linux/RISC-V riscv*-*-linux*
- CSKY ELF csky*-*-elf
- CSKY GNU/LINUX csky*-*-linux
- FreeBSD/riscv riscv*-*-freebsd*
- NXP S12Z s12z-*-elf
- GNU/Linux/OpenRISC or1k*-*-linux*
- * Removed targets
- GDB no longer supports native debugging on versions of MS-Windows
- before Windows XP.
- * Python API
- ** GDB no longer supports Python versions less than 2.6.
- ** The gdb.Inferior type has a new 'progspace' property, which is the program
- space associated to that inferior.
- ** The gdb.Progspace type has a new 'objfiles' method, which returns the list
- of objfiles associated to that program space.
- ** gdb.SYMBOL_LOC_COMMON_BLOCK, gdb.SYMBOL_MODULE_DOMAIN, and
- gdb.SYMBOL_COMMON_BLOCK_DOMAIN were added to reflect changes to
- the gdb core.
- ** gdb.SYMBOL_VARIABLES_DOMAIN, gdb.SYMBOL_FUNCTIONS_DOMAIN, and
- gdb.SYMBOL_TYPES_DOMAIN are now deprecated. These were never
- correct and did not work properly.
- ** The gdb.Value type has a new constructor, which is used to construct a
- gdb.Value from a Python buffer object and a gdb.Type.
- * Configure changes
- --enable-ubsan
- Enable or disable the undefined behavior sanitizer. This is
- disabled by default, but passing --enable-ubsan=yes or
- --enable-ubsan=auto to configure will enable it. Enabling this can
- cause a performance penalty. The undefined behavior sanitizer was
- first introduced in GCC 4.9.
- *** Changes in GDB 8.2
- * The 'set disassembler-options' command now supports specifying options
- for the MIPS target.
- * The 'symbol-file' command now accepts an '-o' option to add a relative
- offset to all sections.
- * Similarly, the 'add-symbol-file' command also accepts an '-o' option to add
- a relative offset to all sections, but it allows to override the load
- address of individual sections using '-s'.
- * The 'add-symbol-file' command no longer requires the second argument
- (address of the text section).
- * The endianness used with the 'set endian auto' mode in the absence of
- an executable selected for debugging is now the last endianness chosen
- either by one of the 'set endian big' and 'set endian little' commands
- or by inferring from the last executable used, rather than the startup
- default.
- * The pager now allows a "c" response, meaning to disable the pager
- for the rest of the current command.
- * The commands 'info variables/functions/types' now show the source line
- numbers of symbol definitions when available.
- * 'info proc' now works on running processes on FreeBSD systems and core
- files created on FreeBSD systems.
- * C expressions can now use _Alignof, and C++ expressions can now use
- alignof.
- * Support for SVE on AArch64 Linux. Note that GDB does not detect changes to
- the vector length while the process is running.
- * New commands
- set debug fbsd-nat
- show debug fbsd-nat
- Control display of debugging info regarding the FreeBSD native target.
- set|show varsize-limit
- This new setting allows the user to control the maximum size of Ada
- objects being printed when those objects have a variable type,
- instead of that maximum size being hardcoded to 65536 bytes.
- set|show record btrace cpu
- Controls the processor to be used for enabling errata workarounds for
- branch trace decode.
- maint check libthread-db
- Run integrity checks on the current inferior's thread debugging
- library
- maint set check-libthread-db (on|off)
- maint show check-libthread-db
- Control whether to run integrity checks on inferior specific thread
- debugging libraries as they are loaded. The default is not to
- perform such checks.
- * Python API
- ** Type alignment is now exposed via the "align" attribute of a gdb.Type.
- ** The commands attached to a breakpoint can be set by assigning to
- the breakpoint's "commands" field.
- ** gdb.execute can now execute multi-line gdb commands.
- ** The new functions gdb.convenience_variable and
- gdb.set_convenience_variable can be used to get and set the value
- of convenience variables.
- ** A gdb.Parameter will no longer print the "set" help text on an
- ordinary "set"; instead by default a "set" will be silent unless
- the get_set_string method returns a non-empty string.
- * New targets
- RiscV ELF riscv*-*-elf
- * Removed targets and native configurations
- m88k running OpenBSD m88*-*-openbsd*
- SH-5/SH64 ELF sh64-*-elf*, SH-5/SH64 support in sh*
- SH-5/SH64 running GNU/Linux SH-5/SH64 support in sh*-*-linux*
- SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
- * Aarch64/Linux hardware watchpoints improvements
- Hardware watchpoints on unaligned addresses are now properly
- supported when running Linux kernel 4.10 or higher: read and access
- watchpoints are no longer spuriously missed, and all watchpoints
- lengths between 1 and 8 bytes are supported. On older kernels,
- watchpoints set on unaligned addresses are no longer missed, with
- the tradeoff that there is a possibility of false hits being
- reported.
- * Configure changes
- --enable-codesign=CERT
- This can be used to invoke "codesign -s CERT" after building gdb.
- This option is useful on macOS, where code signing is required for
- gdb to work properly.
- --disable-gdbcli has been removed
- This is now silently accepted, but does nothing.
- *** Changes in GDB 8.1
- * GDB now supports dynamically creating arbitrary register groups specified
- in XML target descriptions. This allows for finer grain grouping of
- registers on systems with a large amount of registers.
- * The 'ptype' command now accepts a '/o' flag, which prints the
- offsets and sizes of fields in a struct, like the pahole(1) tool.
- * New "--readnever" command line option instructs GDB to not read each
- symbol file's symbolic debug information. This makes startup faster
- but at the expense of not being able to perform symbolic debugging.
- This option is intended for use cases where symbolic debugging will
- not be used, e.g., when you only need to dump the debuggee's core.
- * GDB now uses the GNU MPFR library, if available, to emulate target
- floating-point arithmetic during expression evaluation when the target
- uses different floating-point formats than the host. At least version
- 3.1 of GNU MPFR is required.
- * GDB now supports access to the guarded-storage-control registers and the
- software-based guarded-storage broadcast control registers on IBM z14.
- * On Unix systems, GDB now supports transmitting environment variables
- that are to be set or unset to GDBserver. These variables will
- affect the environment to be passed to the remote inferior.
- To inform GDB of environment variables that are to be transmitted to
- GDBserver, use the "set environment" command. Only user set
- environment variables are sent to GDBserver.
- To inform GDB of environment variables that are to be unset before
- the remote inferior is started by the GDBserver, use the "unset
- environment" command.
- * Completion improvements
- ** GDB can now complete function parameters in linespecs and
- explicit locations without quoting. When setting breakpoints,
- quoting around functions names to help with TAB-completion is
- generally no longer necessary. For example, this now completes
- correctly:
- (gdb) b function(in[TAB]
- (gdb) b function(int)
- Related, GDB is no longer confused with completing functions in
- C++ anonymous namespaces:
- (gdb) b (anon[TAB]
- (gdb) b (anonymous namespace)::[TAB][TAB]
- (anonymous namespace)::a_function()
- (anonymous namespace)::b_function()
- ** GDB now has much improved linespec and explicit locations TAB
- completion support, that better understands what you're
- completing and offers better suggestions. For example, GDB no
- longer offers data symbols as possible completions when you're
- setting a breakpoint.
- ** GDB now TAB-completes label symbol names.
- ** The "complete" command now mimics TAB completion accurately.
- * New command line options (gcore)
- -a
- Dump all memory mappings.
- * Breakpoints on C++ functions are now set on all scopes by default
- By default, breakpoints on functions/methods are now interpreted as
- specifying all functions with the given name ignoring missing
- leading scopes (namespaces and classes).
- For example, assuming a C++ program with symbols named:
- A::B::func()
- B::func()
- both commands "break func()" and "break B::func()" set a breakpoint
- on both symbols.
- You can use the new flag "-qualified" to override this. This makes
- GDB interpret the specified function name as a complete
- fully-qualified name instead. For example, using the same C++
- program, the "break -q B::func" command sets a breakpoint on
- "B::func", only. A parameter has been added to the Python
- gdb.Breakpoint constructor to achieve the same result when creating
- a breakpoint from Python.
- * Breakpoints on functions marked with C++ ABI tags
- GDB can now set breakpoints on functions marked with C++ ABI tags
- (e.g., [abi:cxx11]). See here for a description of ABI tags:
- https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/
- Functions with a C++11 abi tag are demangled/displayed like this:
- function[abi:cxx11](int)
- ^^^^^^^^^^^
- You can now set a breakpoint on such functions simply as if they had
- no tag, like:
- (gdb) b function(int)
- Or if you need to disambiguate between tags, like:
- (gdb) b function[abi:other_tag](int)
- Tab completion was adjusted accordingly as well.
- * Python Scripting
- ** New events gdb.new_inferior, gdb.inferior_deleted, and
- gdb.new_thread are emitted. See the manual for further
- description of these.
- ** A new function, "gdb.rbreak" has been added to the Python API.
- This function allows the setting of a large number of breakpoints
- via a regex pattern in Python. See the manual for further details.
- ** Python breakpoints can now accept explicit locations. See the
- manual for a further description of this feature.
- * New features in the GDB remote stub, GDBserver
- ** GDBserver is now able to start inferior processes with a
- specified initial working directory.
- The user can set the desired working directory to be used from
- GDB using the new "set cwd" command.
- ** New "--selftest" command line option runs some GDBserver self
- tests. These self tests are disabled in releases.
- ** On Unix systems, GDBserver now does globbing expansion and variable
- substitution in inferior command line arguments.
- This is done by starting inferiors using a shell, like GDB does.
- See "set startup-with-shell" in the user manual for how to disable
- this from GDB when using "target extended-remote". When using
- "target remote", you can disable the startup with shell by using the
- new "--no-startup-with-shell" GDBserver command line option.
- ** On Unix systems, GDBserver now supports receiving environment
- variables that are to be set or unset from GDB. These variables
- will affect the environment to be passed to the inferior.
- * When catching an Ada exception raised with a message, GDB now prints
- the message in the catchpoint hit notification. In GDB/MI mode, that
- information is provided as an extra field named "exception-message"
- in the *stopped notification.
- * Trait objects can now be inspected When debugging Rust code. This
- requires compiler support which will appear in Rust 1.24.
- * New remote packets
- QEnvironmentHexEncoded
- Inform GDBserver of an environment variable that is to be passed to
- the inferior when starting it.
- QEnvironmentUnset
- Inform GDBserver of an environment variable that is to be unset
- before starting the remote inferior.
- QEnvironmentReset
- Inform GDBserver that the environment should be reset (i.e.,
- user-set environment variables should be unset).
- QStartupWithShell
- Indicates whether the inferior must be started with a shell or not.
- QSetWorkingDir
- Tell GDBserver that the inferior to be started should use a specific
- working directory.
- * The "maintenance print c-tdesc" command now takes an optional
- argument which is the file name of XML target description.
- * The "maintenance selftest" command now takes an optional argument to
- filter the tests to be run.
- * The "enable", and "disable" commands now accept a range of
- breakpoint locations, e.g. "enable 1.3-5".
- * New commands
- set|show cwd
- Set and show the current working directory for the inferior.
- set|show compile-gcc
- Set and show compilation command used for compiling and injecting code
- with the 'compile' commands.
- set debug separate-debug-file
- show debug separate-debug-file
- Control the display of debug output about separate debug file search.
- set dump-excluded-mappings
- show dump-excluded-mappings
- Control whether mappings marked with the VM_DONTDUMP flag should be
- dumped when generating a core file.
- maint info selftests
- List the registered selftests.
- starti
- Start the debugged program stopping at the first instruction.
- set|show debug or1k
- Control display of debugging messages related to OpenRISC targets.
- set|show print type nested-type-limit
- Set and show the limit of nesting level for nested types that the
- type printer will show.
- * TUI Single-Key mode now supports two new shortcut keys: `i' for stepi and
- `o' for nexti.
- * Safer/improved support for debugging with no debug info
- GDB no longer assumes functions with no debug information return
- 'int'.
- This means that GDB now refuses to call such functions unless you
- tell it the function's type, by either casting the call to the
- declared return type, or by casting the function to a function
- pointer of the right type, and calling that:
- (gdb) p getenv ("PATH")
- 'getenv' has unknown return type; cast the call to its declared return type
- (gdb) p (char *) getenv ("PATH")
- $1 = 0x7fffffffe "/usr/local/bin:/"...
- (gdb) p ((char * (*) (const char *)) getenv) ("PATH")
- $2 = 0x7fffffffe "/usr/local/bin:/"...
- Similarly, GDB no longer assumes that global variables with no debug
- info have type 'int', and refuses to print the variable's value
- unless you tell it the variable's type:
- (gdb) p var
- 'var' has unknown type; cast it to its declared type
- (gdb) p (float) var
- $3 = 3.14
- * New native configurations
- FreeBSD/aarch64 aarch64*-*-freebsd*
- FreeBSD/arm arm*-*-freebsd*
- * New targets
- FreeBSD/aarch64 aarch64*-*-freebsd*
- FreeBSD/arm arm*-*-freebsd*
- OpenRISC ELF or1k*-*-elf
- * Removed targets and native configurations
- Solaris 2.0-9 i?86-*-solaris2.[0-9], sparc*-*-solaris2.[0-9]
- *** Changes in GDB 8.0
- * GDB now supports access to the PKU register on GNU/Linux. The register is
- added by the Memory Protection Keys for Userspace feature which will be
- available in future Intel CPUs.
- * GDB now supports C++11 rvalue references.
- * Python Scripting
- ** New functions to start, stop and access a running btrace recording.
- ** Rvalue references are now supported in gdb.Type.
- * GDB now supports recording and replaying rdrand and rdseed Intel 64
- instructions.
- * Building GDB and GDBserver now requires a C++11 compiler.
- For example, GCC 4.8 or later.
- It is no longer possible to build GDB or GDBserver with a C
- compiler. The --disable-build-with-cxx configure option has been
- removed.
- * Building GDB and GDBserver now requires GNU make >= 3.81.
- It is no longer supported to build GDB or GDBserver with another
- implementation of the make program or an earlier version of GNU make.
- * Native debugging on MS-Windows supports command-line redirection
- Command-line arguments used for starting programs on MS-Windows can
- now include redirection symbols supported by native Windows shells,
- such as '<', '>', '>>', '2>&1', etc. This affects GDB commands such
- as "run", "start", and "set args", as well as the corresponding MI
- features.
- * Support for thread names on MS-Windows.
- GDB now catches and handles the special exception that programs
- running on MS-Windows use to assign names to threads in the
- debugger.
- * Support for Java programs compiled with gcj has been removed.
- * User commands now accept an unlimited number of arguments.
- Previously, only up to 10 was accepted.
- * The "eval" command now expands user-defined command arguments.
- This makes it easier to process a variable number of arguments:
- define mycommand
- set $i = 0
- while $i < $argc
- eval "print $arg%d", $i
- set $i = $i + 1
- end
- end
- * Target descriptions can now describe registers for sparc32 and sparc64.
- * GDB now supports DWARF version 5 (debug information format).
- Its .debug_names index is not yet supported.
- * New native configurations
- FreeBSD/mips mips*-*-freebsd
- * New targets
- Synopsys ARC arc*-*-elf32
- FreeBSD/mips mips*-*-freebsd
- * Removed targets and native configurations
- Alpha running FreeBSD alpha*-*-freebsd*
- Alpha running GNU/kFreeBSD alpha*-*-kfreebsd*-gnu
- * New commands
- flash-erase
- Erases all the flash memory regions reported by the target.
- maint print arc arc-instruction address
- Print internal disassembler information about instruction at a given address.
- * New options
- set disassembler-options
- show disassembler-options
- Controls the passing of target specific information to the disassembler.
- If it is necessary to specify more than one disassembler option then
- multiple options can be placed together into a comma separated list.
- The default value is the empty string. Currently, the only supported
- targets are ARM, PowerPC and S/390.
- * New MI commands
- -target-flash-erase
- Erases all the flash memory regions reported by the target. This is
- equivalent to the CLI command flash-erase.
- -file-list-shared-libraries
- List the shared libraries in the program. This is
- equivalent to the CLI command "info shared".
- -catch-handlers
- Catchpoints stopping the program when Ada exceptions are
- handled. This is equivalent to the CLI command "catch handlers".
- *** Changes in GDB 7.12
- * GDB and GDBserver now build with a C++ compiler by default.
- The --enable-build-with-cxx configure option is now enabled by
- default. One must now explicitly configure with
- --disable-build-with-cxx in order to build with a C compiler. This
- option will be removed in a future release.
- * GDBserver now supports recording btrace without maintaining an active
- GDB connection.
- * GDB now supports a negative repeat count in the 'x' command to examine
- memory backward from the given address. For example:
- (gdb) bt
- #0 Func1 (n=42, p=0x40061c "hogehoge") at main.cpp:4
- #1 0x400580 in main (argc=1, argv=0x7fffffffe5c8) at main.cpp:8
- (gdb) x/-5i 0x0000000000400580
- 0x40056a <main(int, char**)+8>: mov %edi,-0x4(%rbp)
- 0x40056d <main(int, char**)+11>: mov %rsi,-0x10(%rbp)
- 0x400571 <main(int, char**)+15>: mov $0x40061c,%esi
- 0x400576 <main(int, char**)+20>: mov $0x2a,%edi
- 0x40057b <main(int, char**)+25>:
- callq 0x400536 <Func1(int, char const*)>
- * Fortran: Support structures with fields of dynamic types and
- arrays of dynamic types.
- * The symbol dumping maintenance commands have new syntax.
- maint print symbols [-pc address] [--] [filename]
- maint print symbols [-objfile objfile] [-source source] [--] [filename]
- maint print psymbols [-objfile objfile] [-pc address] [--] [filename]
- maint print psymbols [-objfile objfile] [-source source] [--] [filename]
- maint print msymbols [-objfile objfile] [--] [filename]
- * GDB now supports multibit bitfields and enums in target register
- descriptions.
- * New Python-based convenience function $_as_string(val), which returns
- the textual representation of a value. This function is especially
- useful to obtain the text label of an enum value.
- * Intel MPX bound violation handling.
- Segmentation faults caused by a Intel MPX boundary violation
- now display the kind of violation (upper or lower), the memory
- address accessed and the memory bounds, along with the usual
- signal received and code location.
- For example:
- Program received signal SIGSEGV, Segmentation fault
- Upper bound violation while accessing address 0x7fffffffc3b3
- Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3]
- 0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68
- * Rust language support.
- GDB now supports debugging programs written in the Rust programming
- language. See https://www.rust-lang.org/ for more information about
- Rust.
- * Support for running interpreters on specified input/output devices
- GDB now supports a new mechanism that allows frontends to provide
- fully featured GDB console views, as a better alternative to
- building such views on top of the "-interpreter-exec console"
- command. See the new "new-ui" command below. With that command,
- frontends can now start GDB in the traditional command-line mode
- running in an embedded terminal emulator widget, and create a
- separate MI interpreter running on a specified i/o device. In this
- way, GDB handles line editing, history, tab completion, etc. in the
- console all by itself, and the GUI uses the separate MI interpreter
- for its own control and synchronization, invisible to the command
- line.
- * The "catch syscall" command catches groups of related syscalls.
- The "catch syscall" command now supports catching a group of related
- syscalls using the 'group:' or 'g:' prefix.
- * New commands
- skip -file file
- skip -gfile file-glob-pattern
- skip -function function
- skip -rfunction regular-expression
- A generalized form of the skip command, with new support for
- glob-style file names and regular expressions for function names.
- Additionally, a file spec and a function spec may now be combined.
- maint info line-table REGEXP
- Display the contents of GDB's internal line table data structure.
- maint selftest
- Run any GDB unit tests that were compiled in.
- new-ui INTERP TTY
- Start a new user interface instance running INTERP as interpreter,
- using the TTY file for input/output.
- * Python Scripting
- ** gdb.Breakpoint objects have a new attribute "pending", which
- indicates whether the breakpoint is pending.
- ** Three new breakpoint-related events have been added:
- gdb.breakpoint_created, gdb.breakpoint_modified, and
- gdb.breakpoint_deleted.
- signal-event EVENTID
- Signal ("set") the given MS-Windows event object. This is used in
- conjunction with the Windows JIT debugging (AeDebug) support, where
- the OS suspends a crashing process until a debugger can attach to
- it. Resuming the crashing process, in order to debug it, is done by
- signalling an event.
- * Support for tracepoints and fast tracepoints on s390-linux and s390x-linux
- was added in GDBserver, including JIT compiling fast tracepoint's
- conditional expression bytecode into native code.
- * Support for various remote target protocols and ROM monitors has
- been removed:
- target m32rsdi Remote M32R debugging over SDI
- target mips MIPS remote debugging protocol
- target pmon PMON ROM monitor
- target ddb NEC's DDB variant of PMON for Vr4300
- target rockhopper NEC RockHopper variant of PMON
- target lsi LSI variant of PMO
- * Support for tracepoints and fast tracepoints on powerpc-linux,
- powerpc64-linux, and powerpc64le-linux was added in GDBserver,
- including JIT compiling fast tracepoint's conditional expression
- bytecode into native code.
- * MI async record =record-started now includes the method and format used for
- recording. For example:
- =record-started,thread-group="i1",method="btrace",format="bts"
- * MI async record =thread-selected now includes the frame field. For example:
- =thread-selected,id="3",frame={level="0",addr="0x00000000004007c0"}
- * New targets
- Andes NDS32 nds32*-*-elf
- *** Changes in GDB 7.11
- * GDB now supports debugging kernel-based threads on FreeBSD.
- * Per-inferior thread numbers
- Thread numbers are now per inferior instead of global. If you're
- debugging multiple inferiors, GDB displays thread IDs using a
- qualified INF_NUM.THR_NUM form. For example:
- (gdb) info threads
- Id Target Id Frame
- 1.1 Thread 0x7ffff7fc2740 (LWP 8155) (running)
- 1.2 Thread 0x7ffff7fc1700 (LWP 8168) (running)
- * 2.1 Thread 0x7ffff7fc2740 (LWP 8157) (running)
- 2.2 Thread 0x7ffff7fc1700 (LWP 8190) (running)
- As consequence, thread numbers as visible in the $_thread
- convenience variable and in Python's InferiorThread.num attribute
- are no longer unique between inferiors.
- GDB now maintains a second thread ID per thread, referred to as the
- global thread ID, which is the new equivalent of thread numbers in
- previous releases. See also $_gthread below.
- For backwards compatibility, MI's thread IDs always refer to global
- IDs.
- * Commands that accept thread IDs now accept the qualified
- INF_NUM.THR_NUM form as well. For example:
- (gdb) thread 2.1
- [Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
- (gdb)
- * In commands that accept a list of thread IDs, you can now refer to
- all threads of an inferior using a star wildcard. GDB accepts
- "INF_NUM.*", to refer to all threads of inferior INF_NUM, and "*" to
- refer to all threads of the current inferior. For example, "info
- threads 2.*".
- * You can use "info threads -gid" to display the global thread ID of
- all threads.
- * The new convenience variable $_gthread holds the global number of
- the current thread.
- * The new convenience variable $_inferior holds the number of the
- current inferior.
- * GDB now displays the ID and name of the thread that hit a breakpoint
- or received a signal, if your program is multi-threaded. For
- example:
- Thread 3 "bar" hit Breakpoint 1 at 0x40087a: file program.c, line 20.
- Thread 1 "main" received signal SIGINT, Interrupt.
- * Record btrace now supports non-stop mode.
- * Support for tracepoints on aarch64-linux was added in GDBserver.
- * The 'record instruction-history' command now indicates speculative execution
- when using the Intel Processor Trace recording format.
- * GDB now allows users to specify explicit locations, bypassing
- the linespec parser. This feature is also available to GDB/MI
- clients.
- * Multi-architecture debugging is supported on AArch64 GNU/Linux.
- GDB now is able to debug both AArch64 applications and ARM applications
- at the same time.
- * Support for fast tracepoints on aarch64-linux was added in GDBserver,
- including JIT compiling fast tracepoint's conditional expression bytecode
- into native code.
- * GDB now supports displaced stepping on AArch64 GNU/Linux.
- * "info threads", "info inferiors", "info display", "info checkpoints"
- and "maint info program-spaces" now list the corresponding items in
- ascending ID order, for consistency with all other "info" commands.
- * In Ada, the overloads selection menu has been enhanced to display the
- parameter types and the return types for the matching overloaded subprograms.
- * New commands
- maint set target-non-stop (on|off|auto)
- maint show target-non-stop
- Control whether GDB targets always operate in non-stop mode even if
- "set non-stop" is "off". The default is "auto", meaning non-stop
- mode is enabled if supported by the target.
- maint set bfd-sharing
- maint show bfd-sharing
- Control the reuse of bfd objects.
- set debug bfd-cache
- show debug bfd-cache
- Control display of debugging info regarding bfd caching.
- set debug fbsd-lwp
- show debug fbsd-lwp
- Control display of debugging info regarding FreeBSD threads.
- set remote multiprocess-extensions-packet
- show remote multiprocess-extensions-packet
- Set/show the use of the remote protocol multiprocess extensions.
- set remote thread-events
- show remote thread-events
- Set/show the use of thread create/exit events.
- set ada print-signatures on|off
- show ada print-signatures"
- Control whether parameter types and return types are displayed in overloads
- selection menus. It is activated (@code{on}) by default.
- set max-value-size
- show max-value-size
- Controls the maximum size of memory, in bytes, that GDB will
- allocate for value contents. Prevents incorrect programs from
- causing GDB to allocate overly large buffers. Default is 64k.
- * The "disassemble" command accepts a new modifier: /s.
- It prints mixed source+disassembly like /m with two differences:
- - disassembled instructions are now printed in program order, and
- - and source for all relevant files is now printed.
- The "/m" option is now considered deprecated: its "source-centric"
- output hasn't proved useful in practice.
- * The "record instruction-history" command accepts a new modifier: /s.
- It behaves exactly like /m and prints mixed source+disassembly.
- * The "set scheduler-locking" command supports a new mode "replay".
- It behaves like "off" in record mode and like "on" in replay mode.
- * Support for various ROM monitors has been removed:
- target dbug dBUG ROM monitor for Motorola ColdFire
- target picobug Motorola picobug monitor
- target dink32 DINK32 ROM monitor for PowerPC
- target m32r Renesas M32R/D ROM monitor
- target mon2000 mon2000 ROM monitor
- target ppcbug PPCBUG ROM monitor for PowerPC
- * Support for reading/writing memory and extracting values on architectures
- whose memory is addressable in units of any integral multiple of 8 bits.
- catch handlers
- Allows to break when an Ada exception is handled.
- * New remote packets
- exec stop reason
- Indicates that an exec system call was executed.
- exec-events feature in qSupported
- The qSupported packet allows GDB to request support for exec
- events using the new 'gdbfeature' exec-event, and the qSupported
- response can contain the corresponding 'stubfeature'. Set and
- show commands can be used to display whether these features are enabled.
- vCtrlC
- Equivalent to interrupting with the ^C character, but works in
- non-stop mode.
- thread created stop reason (T05 create:...)
- Indicates that the thread was just created and is stopped at entry.
- thread exit stop reply (w exitcode;tid)
- Indicates that the thread has terminated.
- QThreadEvents
- Enables/disables thread create and exit event reporting. For
- example, this is used in non-stop mode when GDB stops a set of
- threads and synchronously waits for the their corresponding stop
- replies. Without exit events, if one of the threads exits, GDB
- would hang forever not knowing that it should no longer expect a
- stop for that same thread.
- N stop reply
- Indicates that there are no resumed threads left in the target (all
- threads are stopped). The remote stub reports support for this stop
- reply to GDB's qSupported query.
- QCatchSyscalls
- Enables/disables catching syscalls from the inferior process.
- The remote stub reports support for this packet to GDB's qSupported query.
- syscall_entry stop reason
- Indicates that a syscall was just called.
- syscall_return stop reason
- Indicates that a syscall just returned.
- * Extended-remote exec events
- ** GDB now has support for exec events on extended-remote Linux targets.
- For such targets with Linux kernels 2.5.46 and later, this enables
- follow-exec-mode and exec catchpoints.
- set remote exec-event-feature-packet
- show remote exec-event-feature-packet
- Set/show the use of the remote exec event feature.
- * Thread names in remote protocol
- The reply to qXfer:threads:read may now include a name attribute for each
- thread.
- * Target remote mode fork and exec events
- ** GDB now has support for fork and exec events on target remote mode
- Linux targets. For such targets with Linux kernels 2.5.46 and later,
- this enables follow-fork-mode, detach-on-fork, follow-exec-mode, and
- fork and exec catchpoints.
- * Remote syscall events
- ** GDB now has support for catch syscall on remote Linux targets,
- currently enabled on x86/x86_64 architectures.
- set remote catch-syscall-packet
- show remote catch-syscall-packet
- Set/show the use of the remote catch syscall feature.
- * MI changes
- ** The -var-set-format command now accepts the zero-hexadecimal
- format. It outputs data in hexadecimal format with zero-padding on the
- left.
- * Python Scripting
- ** gdb.InferiorThread objects have a new attribute "global_num",
- which refers to the thread's global thread ID. The existing
- "num" attribute now refers to the thread's per-inferior number.
- See "Per-inferior thread numbers" above.
- ** gdb.InferiorThread objects have a new attribute "inferior", which
- is the Inferior object the thread belongs to.
- *** Changes in GDB 7.10
- * Support for process record-replay and reverse debugging on aarch64*-linux*
- targets has been added. GDB now supports recording of A64 instruction set
- including advance SIMD instructions.
- * Support for Sun's version of the "stabs" debug file format has been removed.
- * GDB now honors the content of the file /proc/PID/coredump_filter
- (PID is the process ID) on GNU/Linux systems. This file can be used
- to specify the types of memory mappings that will be included in a
- corefile. For more information, please refer to the manual page of
- "core(5)". GDB also has a new command: "set use-coredump-filter
- on|off". It allows to set whether GDB will read the content of the
- /proc/PID/coredump_filter file when generating a corefile.
- * The "info os" command on GNU/Linux can now display information on
- cpu information :
- "info os cpus" Listing of all cpus/cores on the system
- * GDB has two new commands: "set serial parity odd|even|none" and
- "show serial parity". These allows to set or show parity for the
- remote serial I/O.
- * The "info source" command now displays the producer string if it was
- present in the debug info. This typically includes the compiler version
- and may include things like its command line arguments.
- * The "info dll", an alias of the "info sharedlibrary" command,
- is now available on all platforms.
- * Directory names supplied to the "set sysroot" commands may be
- prefixed with "target:" to tell GDB to access shared libraries from
- the target system, be it local or remote. This replaces the prefix
- "remote:". The default sysroot has been changed from "" to
- "target:". "remote:" is automatically converted to "target:" for
- backward compatibility.
- * The system root specified by "set sysroot" will be prepended to the
- filename of the main executable (if reported to GDB as absolute by
- the operating system) when starting processes remotely, and when
- attaching to already-running local or remote processes.
- * GDB now supports automatic location and retrieval of executable
- files from remote targets. Remote debugging can now be initiated
- using only a "target remote" or "target extended-remote" command
- (no "set sysroot" or "file" commands are required). See "New remote
- packets" below.
- * The "dump" command now supports verilog hex format.
- * GDB now supports the vector ABI on S/390 GNU/Linux targets.
- * On GNU/Linux, GDB and gdbserver are now able to access executable
- and shared library files without a "set sysroot" command when
- attaching to processes running in different mount namespaces from
- the debugger. This makes it possible to attach to processes in
- containers as simply as "gdb -p PID" or "gdbserver --attach PID".
- See "New remote packets" below.
- * The "tui reg" command now provides completion for all of the
- available register groups, including target specific groups.
- * The HISTSIZE environment variable is no longer read when determining
- the size of GDB's command history. GDB now instead reads the dedicated
- GDBHISTSIZE environment variable. Setting GDBHISTSIZE to "-1" or to "" now
- disables truncation of command history. Non-numeric values of GDBHISTSIZE
- are ignored.
- * Guile Scripting
- ** Memory ports can now be unbuffered.
- * Python Scripting
- ** gdb.Objfile objects have a new attribute "username",
- which is the name of the objfile as specified by the user,
- without, for example, resolving symlinks.
- ** You can now write frame unwinders in Python.
- ** gdb.Type objects have a new method "optimized_out",
- returning optimized out gdb.Value instance of this type.
- ** gdb.Value objects have new methods "reference_value" and
- "const_value" which return a reference to the value and a
- "const" version of the value respectively.
- * New commands
- maint print symbol-cache
- Print the contents of the symbol cache.
- maint print symbol-cache-statistics
- Print statistics of symbol cache usage.
- maint flush-symbol-cache
- Flush the contents of the symbol cache.
- record btrace bts
- record bts
- Start branch trace recording using Branch Trace Store (BTS) format.
- compile print
- Evaluate expression by using the compiler and print result.
- tui enable
- tui disable
- Explicit commands for enabling and disabling tui mode.
- show mpx bound
- set mpx bound on i386 and amd64
- Support for bound table investigation on Intel MPX enabled applications.
- record btrace pt
- record pt
- Start branch trace recording using Intel Processor Trace format.
- maint info btrace
- Print information about branch tracing internals.
- maint btrace packet-history
- Print the raw branch tracing data.
- maint btrace clear-packet-history
- Discard the stored raw branch tracing data.
- maint btrace clear
- Discard all branch tracing data. It will be fetched and processed
- anew by the next "record" command.
- * New options
- set debug dwarf-die
- Renamed from "set debug dwarf2-die".
- show debug dwarf-die
- Renamed from "show debug dwarf2-die".
- set debug dwarf-read
- Renamed from "set debug dwarf2-read".
- show debug dwarf-read
- Renamed from "show debug dwarf2-read".
- maint set dwarf always-disassemble
- Renamed from "maint set dwarf2 always-disassemble".
- maint show dwarf always-disassemble
- Renamed from "maint show dwarf2 always-disassemble".
- maint set dwarf max-cache-age
- Renamed from "maint set dwarf2 max-cache-age".
- maint show dwarf max-cache-age
- Renamed from "maint show dwarf2 max-cache-age".
- set debug dwarf-line
- show debug dwarf-line
- Control display of debugging info regarding DWARF line processing.
- set max-completions
- show max-completions
- Set the maximum number of candidates to be considered during
- completion. The default value is 200. This limit allows GDB
- to avoid generating large completion lists, the computation of
- which can cause the debugger to become temporarily unresponsive.
- set history remove-duplicates
- show history remove-duplicates
- Control the removal of duplicate history entries.
- maint set symbol-cache-size
- maint show symbol-cache-size
- Control the size of the symbol cache.
- set|show record btrace bts buffer-size
- Set and show the size of the ring buffer used for branch tracing in
- BTS format.
- The obtained size may differ from the requested size. Use "info
- record" to see the obtained buffer size.
- set debug linux-namespaces
- show debug linux-namespaces
- Control display of debugging info regarding Linux namespaces.
- set|show record btrace pt buffer-size
- Set and show the size of the ring buffer used for branch tracing in
- Intel Processor Trace format.
- The obtained size may differ from the requested size. Use "info
- record" to see the obtained buffer size.
- maint set|show btrace pt skip-pad
- Set and show whether PAD packets are skipped when computing the
- packet history.
- * The command 'thread apply all' can now support new option '-ascending'
- to call its specified command for all threads in ascending order.
- * Python/Guile scripting
- ** GDB now supports auto-loading of Python/Guile scripts contained in the
- special section named `.debug_gdb_scripts'.
- * New remote packets
- qXfer:btrace-conf:read
- Return the branch trace configuration for the current thread.
- Qbtrace-conf:bts:size
- Set the requested ring buffer size for branch tracing in BTS format.
- Qbtrace:pt
- Enable Intel Processor Trace-based branch tracing for the current
- process. The remote stub reports support for this packet to GDB's
- qSupported query.
- Qbtrace-conf:pt:size
- Set the requested ring buffer size for branch tracing in Intel Processor
- Trace format.
- swbreak stop reason
- Indicates a memory breakpoint instruction was executed, irrespective
- of whether it was GDB that planted the breakpoint or the breakpoint
- is hardcoded in the program. This is required for correct non-stop
- mode operation.
- hwbreak stop reason
- Indicates the target stopped for a hardware breakpoint. This is
- required for correct non-stop mode operation.
- vFile:fstat:
- Return information about files on the remote system.
- qXfer:exec-file:read
- Return the full absolute name of the file that was executed to
- create a process running on the remote system.
- vFile:setfs:
- Select the filesystem on which vFile: operations with filename
- arguments will operate. This is required for GDB to be able to
- access files on remote targets where the remote stub does not
- share a common filesystem with the inferior(s).
- fork stop reason
- Indicates that a fork system call was executed.
- vfork stop reason
- Indicates that a vfork system call was executed.
- vforkdone stop reason
- Indicates that a vfork child of the specified process has executed
- an exec or exit, allowing the vfork parent to resume execution.
- fork-events and vfork-events features in qSupported
- The qSupported packet allows GDB to request support for fork and
- vfork events using new 'gdbfeatures' fork-events and vfork-events,
- and the qSupported response can contain the corresponding
- 'stubfeatures'. Set and show commands can be used to display
- whether these features are enabled.
- * Extended-remote fork events
- ** GDB now has support for fork events on extended-remote Linux
- targets. For targets with Linux kernels 2.5.60 and later, this
- enables follow-fork-mode and detach-on-fork for both fork and
- vfork, as well as fork and vfork catchpoints.
- * The info record command now shows the recording format and the
- branch tracing configuration for the current thread when using
- the btrace record target.
- For the BTS format, it shows the ring buffer size.
- * GDB now has support for DTrace USDT (Userland Static Defined
- Tracing) probes. The supported targets are x86_64-*-linux-gnu.
- * GDB now supports access to vector registers on S/390 GNU/Linux
- targets.
- * Removed command line options
- -xdb HP-UX XDB compatibility mode.
- * Removed targets and native configurations
- HP/PA running HP-UX hppa*-*-hpux*
- Itanium running HP-UX ia64-*-hpux*
- * New configure options
- --with-intel-pt
- This configure option allows the user to build GDB with support for
- Intel Processor Trace (default: auto). This requires libipt.
- --with-libipt-prefix=PATH
- Specify the path to the version of libipt that GDB should use.
- $PATH/include should contain the intel-pt.h header and
- $PATH/lib should contain the libipt.so library.
- *** Changes in GDB 7.9.1
- * Python Scripting
- ** Xmethods can now specify a result type.
- *** Changes in GDB 7.9
- * GDB now supports hardware watchpoints on x86 GNU Hurd.
- * Python Scripting
- ** You can now access frame registers from Python scripts.
- ** New attribute 'producer' for gdb.Symtab objects.
- ** gdb.Objfile objects have a new attribute "progspace",
- which is the gdb.Progspace object of the containing program space.
- ** gdb.Objfile objects have a new attribute "owner".
- ** gdb.Objfile objects have a new attribute "build_id",
- which is the build ID generated when the file was built.
- ** gdb.Objfile objects have a new method "add_separate_debug_file".
- ** A new event "gdb.clear_objfiles" has been added, triggered when
- selecting a new file to debug.
- ** You can now add attributes to gdb.Objfile and gdb.Progspace objects.
- ** New function gdb.lookup_objfile.
- New events which are triggered when GDB modifies the state of the
- inferior.
- ** gdb.events.inferior_call_pre: Function call is about to be made.
- ** gdb.events.inferior_call_post: Function call has just been made.
- ** gdb.events.memory_changed: A memory location has been altered.
- ** gdb.events.register_changed: A register has been altered.
- * New Python-based convenience functions:
- ** $_caller_is(name [, number_of_frames])
- ** $_caller_matches(regexp [, number_of_frames])
- ** $_any_caller_is(name [, number_of_frames])
- ** $_any_caller_matches(regexp [, number_of_frames])
- * GDB now supports the compilation and injection of source code into
- the inferior. GDB will use GCC 5.0 or higher built with libcc1.so
- to compile the source code to object code, and if successful, inject
- and execute that code within the current context of the inferior.
- Currently the C language is supported. The commands used to
- interface with this new feature are:
- compile code [-raw|-r] [--] [source code]
- compile file [-raw|-r] filename
- * New commands
- demangle [-l language] [--] name
- Demangle "name" in the specified language, or the current language
- if elided. This command is renamed from the "maint demangle" command.
- The latter is kept as a no-op to avoid "maint demangle" being interpreted
- as "maint demangler-warning".
- queue-signal signal-name-or-number
- Queue a signal to be delivered to the thread when it is resumed.
- add-auto-load-scripts-directory directory
- Add entries to the list of directories from which to load auto-loaded
- scripts.
- maint print user-registers
- List all currently available "user" registers.
- compile code [-r|-raw] [--] [source code]
- Compile, inject, and execute in the inferior the executable object
- code produced by compiling the provided source code.
- compile file [-r|-raw] filename
- Compile and inject into the inferior the executable object code
- produced by compiling the source code stored in the filename
- provided.
- * On resume, GDB now always passes the signal the program had stopped
- for to the thread the signal was sent to, even if the user changed
- threads before resuming. Previously GDB would often (but not
- always) deliver the signal to the thread that happens to be current
- at resume time.
- * Conversely, the "signal" command now consistently delivers the
- requested signal to the current thread. GDB now asks for
- confirmation if the program had stopped for a signal and the user
- switched threads meanwhile.
- * "breakpoint always-inserted" modes "off" and "auto" merged.
- Now, when 'breakpoint always-inserted mode' is set to "off", GDB
- won't remove breakpoints from the target until all threads stop,
- even in non-stop mode. The "auto" mode has been removed, and "off"
- is now the default mode.
- * New options
- set debug symbol-lookup
- show debug symbol-lookup
- Control display of debugging info regarding symbol lookup.
- * MI changes
- ** The -list-thread-groups command outputs an exit-code field for
- inferiors that have exited.
- * New targets
- MIPS SDE mips*-sde*-elf*
- * Removed targets
- Support for these obsolete configurations has been removed.
- Alpha running OSF/1 (or Tru64) alpha*-*-osf*
- SGI Irix-5.x mips-*-irix5*
- SGI Irix-6.x mips-*-irix6*
- VAX running (4.2 - 4.3 Reno) BSD vax-*-bsd*
- VAX running Ultrix vax-*-ultrix*
- * The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
- and "assf"), have been removed. Use the "sharedlibrary" command, or
- its alias "share", instead.
- *** Changes in GDB 7.8
- * New command line options
- -D data-directory
- This is an alias for the --data-directory option.
- * GDB supports printing and modifying of variable length automatic arrays
- as specified in ISO C99.
- * The ARM simulator now supports instruction level tracing
- with or without disassembly.
- * Guile scripting
- GDB now has support for scripting using Guile. Whether this is
- available is determined at configure time.
- Guile version 2.0 or greater is required.
- Guile version 2.0.9 is well tested, earlier 2.0 versions are not.
- * New commands (for set/show, see "New options" below)
- guile [code]
- gu [code]
- Invoke CODE by passing it to the Guile interpreter.
- guile-repl
- gr
- Start a Guile interactive prompt (or "repl" for "read-eval-print loop").
- info auto-load guile-scripts [regexp]
- Print the list of automatically loaded Guile scripts.
- * The source command is now capable of sourcing Guile scripts.
- This feature is dependent on the debugger being built with Guile support.
- * New options
- set print symbol-loading (off|brief|full)
- show print symbol-loading
- Control whether to print informational messages when loading symbol
- information for a file. The default is "full", but when debugging
- programs with large numbers of shared libraries the amount of output
- becomes less useful.
- set guile print-stack (none|message|full)
- show guile print-stack
- Show a stack trace when an error is encountered in a Guile script.
- set auto-load guile-scripts (on|off)
- show auto-load guile-scripts
- Control auto-loading of Guile script files.
- maint ada set ignore-descriptive-types (on|off)
- maint ada show ignore-descriptive-types
- Control whether the debugger should ignore descriptive types in Ada
- programs. The default is not to ignore the descriptive types. See
- the user manual for more details on descriptive types and the intended
- usage of this option.
- set auto-connect-native-target
- Control whether GDB is allowed to automatically connect to the
- native target for the run, attach, etc. commands when not connected
- to any target yet. See also "target native" below.
- set record btrace replay-memory-access (read-only|read-write)
- show record btrace replay-memory-access
- Control what memory accesses are allowed during replay.
- maint set target-async (on|off)
- maint show target-async
- This controls whether GDB targets operate in synchronous or
- asynchronous mode. Normally the default is asynchronous, if it is
- available; but this can be changed to more easily debug problems
- occurring only in synchronous mode.
- set mi-async (on|off)
- show mi-async
- Control whether MI asynchronous mode is preferred. This supersedes
- "set target-async" of previous GDB versions.
- * "set target-async" is deprecated as a CLI option and is now an alias
- for "set mi-async" (only puts MI into async mode).
- * Background execution commands (e.g., "c&", "s&", etc.) are now
- possible ``out of the box'' if the target supports them. Previously
- the user would need to explicitly enable the possibility with the
- "set target-async on" command.
- * New features in the GDB remote stub, GDBserver
- ** New option --debug-format=option1[,option2,...] allows one to add
- additional text to each output. At present only timestamps
- are supported: --debug-format=timestamps.
- Timestamps can also be turned on with the
- "monitor set debug-format timestamps" command from GDB.
- * The 'record instruction-history' command now starts counting instructions
- at one. This also affects the instruction ranges reported by the
- 'record function-call-history' command when given the /i modifier.
- * The command 'record function-call-history' supports a new modifier '/c' to
- indent the function names based on their call stack depth.
- The fields for the '/i' and '/l' modifier have been reordered.
- The source line range is now prefixed with 'at'.
- The instruction range is now prefixed with 'inst'.
- Both ranges are now printed as '<from>, <to>' to allow copy&paste to the
- "record instruction-history" and "list" commands.
- * The ranges given as arguments to the 'record function-call-history' and
- 'record instruction-history' commands are now inclusive.
- * The btrace record target now supports the 'record goto' command.
- For locations inside the execution trace, the back trace is computed
- based on the information stored in the execution trace.
- * The btrace record target supports limited reverse execution and replay.
- The target does not record data and therefore does not allow reading
- memory or registers.
- * The "catch syscall" command now works on s390*-linux* targets.
- * The "compare-sections" command is no longer specific to target
- remote. It now works with all targets.
- * All native targets are now consistently called "native".
- Consequently, the "target child", "target GNU", "target djgpp",
- "target procfs" (Solaris/Irix/OSF/AIX) and "target darwin-child"
- commands have been replaced with "target native". The QNX/NTO port
- leaves the "procfs" target in place and adds a "native" target for
- consistency with other ports. The impact on users should be minimal
- as these commands previously either throwed an error, or were
- no-ops. The target's name is visible in the output of the following
- commands: "help target", "info target", "info files", "maint print
- target-stack".
- * The "target native" command now connects to the native target. This
- can be used to launch native programs even when "set
- auto-connect-native-target" is set to off.
- * GDB now supports access to Intel MPX registers on GNU/Linux.
- * Support for Intel AVX-512 registers on GNU/Linux.
- Support displaying and modifying Intel AVX-512 registers
- $zmm0 - $zmm31 and $k0 - $k7 on GNU/Linux.
- * New remote packets
- qXfer:btrace:read's annex
- The qXfer:btrace:read packet supports a new annex 'delta' to read
- branch trace incrementally.
- * Python Scripting
- ** Valid Python operations on gdb.Value objects representing
- structs/classes invoke the corresponding overloaded operators if
- available.
- ** New `Xmethods' feature in the Python API. Xmethods are
- additional methods or replacements for existing methods of a C++
- class. This feature is useful for those cases where a method
- defined in C++ source code could be inlined or optimized out by
- the compiler, making it unavailable to GDB.
- * New targets
- PowerPC64 GNU/Linux little-endian powerpc64le-*-linux*
- * The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
- and "assf"), have been deprecated. Use the "sharedlibrary" command, or
- its alias "share", instead.
- * The commands "set remotebaud" and "show remotebaud" are no longer
- supported. Use "set serial baud" and "show serial baud" (respectively)
- instead.
- * MI changes
- ** A new option "-gdb-set mi-async" replaces "-gdb-set
- target-async". The latter is left as a deprecated alias of the
- former for backward compatibility. If the target supports it,
- CLI background execution commands are now always possible by
- default, independently of whether the frontend stated a
- preference for asynchronous execution with "-gdb-set mi-async".
- Previously "-gdb-set target-async off" affected both MI execution
- commands and CLI execution commands.
- *** Changes in GDB 7.7
- * Improved support for process record-replay and reverse debugging on
- arm*-linux* targets. Support for thumb32 and syscall instruction
- recording has been added.
- * GDB now supports SystemTap SDT probes on AArch64 GNU/Linux.
- * GDB now supports Fission DWP file format version 2.
- http://gcc.gnu.org/wiki/DebugFission
- * New convenience function "$_isvoid", to check whether an expression
- is void. A void expression is an expression where the type of the
- result is "void". For example, some convenience variables may be
- "void" when evaluated (e.g., "$_exitcode" before the execution of
- the program being debugged; or an undefined convenience variable).
- Another example, when calling a function whose return type is
- "void".
- * The "maintenance print objfiles" command now takes an optional regexp.
- * The "catch syscall" command now works on arm*-linux* targets.
- * GDB now consistently shows "<not saved>" when printing values of
- registers the debug info indicates have not been saved in the frame
- and there's nowhere to retrieve them from
- (callee-saved/call-clobbered registers):
- (gdb) p $rax
- $1 = <not saved>
- (gdb) info registers rax
- rax <not saved>
- Before, the former would print "<optimized out>", and the latter
- "*value not available*".
- * New script contrib/gdb-add-index.sh for adding .gdb_index sections
- to binaries.
- * Python scripting
- ** Frame filters and frame decorators have been added.
- ** Temporary breakpoints are now supported.
- ** Line tables representation has been added.
- ** New attribute 'parent_type' for gdb.Field objects.
- ** gdb.Field objects can be used as subscripts on gdb.Value objects.
- ** New attribute 'name' for gdb.Type objects.
- * New targets
- Nios II ELF nios2*-*-elf
- Nios II GNU/Linux nios2*-*-linux
- Texas Instruments MSP430 msp430*-*-elf
- * Removed native configurations
- Support for these a.out NetBSD and OpenBSD obsolete configurations has
- been removed. ELF variants of these configurations are kept supported.
- arm*-*-netbsd* but arm*-*-netbsdelf* is kept supported.
- i[34567]86-*-netbsd* but i[34567]86-*-netbsdelf* is kept supported.
- i[34567]86-*-openbsd[0-2].* but i[34567]86-*-openbsd* is kept supported.
- i[34567]86-*-openbsd3.[0-3]
- m68*-*-netbsd* but m68*-*-netbsdelf* is kept supported.
- sparc-*-netbsd* but sparc-*-netbsdelf* is kept supported.
- vax-*-netbsd* but vax-*-netbsdelf* is kept supported.
- * New commands:
- catch rethrow
- Like "catch throw", but catches a re-thrown exception.
- maint check-psymtabs
- Renamed from old "maint check-symtabs".
- maint check-symtabs
- Perform consistency checks on symtabs.
- maint expand-symtabs
- Expand symtabs matching an optional regexp.
- show configuration
- Display the details of GDB configure-time options.
- maint set|show per-command
- maint set|show per-command space
- maint set|show per-command time
- maint set|show per-command symtab
- Enable display of per-command gdb resource usage.
- remove-symbol-file FILENAME
- remove-symbol-file -a ADDRESS
- Remove a symbol file added via add-symbol-file. The file to remove
- can be identified by its filename or by an address that lies within
- the boundaries of this symbol file in memory.
- info exceptions
- info exceptions REGEXP
- Display the list of Ada exceptions defined in the program being
- debugged. If provided, only the exceptions whose names match REGEXP
- are listed.
- * New options
- set debug symfile off|on
- show debug symfile
- Control display of debugging info regarding reading symbol files and
- symbol tables within those files
- set print raw frame-arguments
- show print raw frame-arguments
- Set/show whether to print frame arguments in raw mode,
- disregarding any defined pretty-printers.
- set remote trace-status-packet
- show remote trace-status-packet
- Set/show the use of remote protocol qTStatus packet.
- set debug nios2
- show debug nios2
- Control display of debugging messages related to Nios II targets.
- set range-stepping
- show range-stepping
- Control whether target-assisted range stepping is enabled.
- set startup-with-shell
- show startup-with-shell
- Specifies whether Unix child processes are started via a shell or
- directly.
- set code-cache
- show code-cache
- Use the target memory cache for accesses to the code segment. This
- improves performance of remote debugging (particularly disassembly).
- * You can now use a literal value 'unlimited' for options that
- interpret 0 or -1 as meaning "unlimited". E.g., "set
- trace-buffer-size unlimited" is now an alias for "set
- trace-buffer-size -1" and "set height unlimited" is now an alias for
- "set height 0".
- * The "set debug symtab-create" debugging option of GDB has been changed to
- accept a verbosity level. 0 means "off", 1 provides basic debugging
- output, and values of 2 or greater provides more verbose output.
- * New command-line options
- --configuration
- Display the details of GDB configure-time options.
- * The command 'tsave' can now support new option '-ctf' to save trace
- buffer in Common Trace Format.
- * Newly installed $prefix/bin/gcore acts as a shell interface for the
- GDB command gcore.
- * GDB now implements the C++ 'typeid' operator.
- * The new convenience variable $_exception holds the exception being
- thrown or caught at an exception-related catchpoint.
- * The exception-related catchpoints, like "catch throw", now accept a
- regular expression which can be used to filter exceptions by type.
- * The new convenience variable $_exitsignal is automatically set to
- the terminating signal number when the program being debugged dies
- due to an uncaught signal.
- * MI changes
- ** All MI commands now accept an optional "--language" option.
- Support for this feature can be verified by using the "-list-features"
- command, which should contain "language-option".
- ** The new command -info-gdb-mi-command allows the user to determine
- whether a GDB/MI command is supported or not.
- ** The "^error" result record returned when trying to execute an undefined
- GDB/MI command now provides a variable named "code" whose content is the
- "undefined-command" error code. Support for this feature can be verified
- by using the "-list-features" command, which should contain
- "undefined-command-error-code".
- ** The -trace-save MI command can optionally save trace buffer in Common
- Trace Format now.
- ** The new command -dprintf-insert sets a dynamic printf breakpoint.
- ** The command -data-list-register-values now accepts an optional
- "--skip-unavailable" option. When used, only the available registers
- are displayed.
- ** The new command -trace-frame-collected dumps collected variables,
- computed expressions, tvars, memory and registers in a traceframe.
- ** The commands -stack-list-locals, -stack-list-arguments and
- -stack-list-variables now accept an option "--skip-unavailable".
- When used, only the available locals or arguments are displayed.
- ** The -exec-run command now accepts an optional "--start" option.
- When used, the command follows the same semantics as the "start"
- command, stopping the program's execution at the start of its
- main subprogram. Support for this feature can be verified using
- the "-list-features" command, which should contain
- "exec-run-start-option".
- ** The new commands -catch-assert and -catch-exceptions insert
- catchpoints stopping the program when Ada exceptions are raised.
- ** The new command -info-ada-exceptions provides the equivalent of
- the new "info exceptions" command.
- * New system-wide configuration scripts
- A GDB installation now provides scripts suitable for use as system-wide
- configuration scripts for the following systems:
- ** ElinOS
- ** Wind River Linux
- * GDB now supports target-assigned range stepping with remote targets.
- This improves the performance of stepping source lines by reducing
- the number of control packets from/to GDB. See "New remote packets"
- below.
- * GDB now understands the element 'tvar' in the XML traceframe info.
- It has the id of the collected trace state variables.
- * On S/390 targets that provide the transactional-execution feature,
- the program interruption transaction diagnostic block (TDB) is now
- represented as a number of additional "registers" in GDB.
- * New remote packets
- vCont;r
- The vCont packet supports a new 'r' action, that tells the remote
- stub to step through an address range itself, without GDB
- involvemement at each single-step.
- qXfer:libraries-svr4:read's annex
- The previously unused annex of the qXfer:libraries-svr4:read packet
- is now used to support passing an argument list. The remote stub
- reports support for this argument list to GDB's qSupported query.
- The defined arguments are "start" and "prev", used to reduce work
- necessary for library list updating, resulting in significant
- speedup.
- * New features in the GDB remote stub, GDBserver
- ** GDBserver now supports target-assisted range stepping. Currently
- enabled on x86/x86_64 GNU/Linux targets.
- ** GDBserver now adds element 'tvar' in the XML in the reply to
- 'qXfer:traceframe-info:read'. It has the id of the collected
- trace state variables.
- ** GDBserver now supports hardware watchpoints on the MIPS GNU/Linux
- target.
- * New 'z' formatter for printing and examining memory, this displays the
- value as hexadecimal zero padded on the left to the size of the type.
- * GDB can now use Windows x64 unwinding data.
- * The "set remotebaud" command has been replaced by "set serial baud".
- Similarly, "show remotebaud" has been replaced by "show serial baud".
- The "set remotebaud" and "show remotebaud" commands are still available
- to provide backward compatibility with older versions of GDB.
- *** Changes in GDB 7.6
- * Target record has been renamed to record-full.
- Record/replay is now enabled with the "record full" command.
- This also affects settings that are associated with full record/replay
- that have been moved from "set/show record" to "set/show record full":
- set|show record full insn-number-max
- set|show record full stop-at-limit
- set|show record full memory-query
- * A new record target "record-btrace" has been added. The new target
- uses hardware support to record the control-flow of a process. It
- does not support replaying the execution, but it implements the
- below new commands for investigating the recorded execution log.
- This new recording method can be enabled using:
- record btrace
- The "record-btrace" target is only available on Intel Atom processors
- and requires a Linux kernel 2.6.32 or later.
- * Two new commands have been added for record/replay to give information
- about the recorded execution without having to replay the execution.
- The commands are only supported by "record btrace".
- record instruction-history prints the execution history at
- instruction granularity
- record function-call-history prints the execution history at
- function granularity
- * New native configurations
- ARM AArch64 GNU/Linux aarch64*-*-linux-gnu
- FreeBSD/powerpc powerpc*-*-freebsd
- x86_64/Cygwin x86_64-*-cygwin*
- Tilera TILE-Gx GNU/Linux tilegx*-*-linux-gnu
- * New targets
- ARM AArch64 aarch64*-*-elf
- ARM AArch64 GNU/Linux aarch64*-*-linux
- Lynx 178 PowerPC powerpc-*-lynx*178
- x86_64/Cygwin x86_64-*-cygwin*
- Tilera TILE-Gx GNU/Linux tilegx*-*-linux
- * If the configured location of system.gdbinit file (as given by the
- --with-system-gdbinit option at configure time) is in the
- data-directory (as specified by --with-gdb-datadir at configure
- time) or in one of its subdirectories, then GDB will look for the
- system-wide init file in the directory specified by the
- --data-directory command-line option.
- * New command line options:
- -nh Disables auto-loading of ~/.gdbinit, but still executes all the
- other initialization files, unlike -nx which disables all of them.
- * Removed command line options
- -epoch This was used by the gdb mode in Epoch, an ancient fork of
- Emacs.
- * The 'ptype' and 'whatis' commands now accept an argument to control
- type formatting.
- * 'info proc' now works on some core files.
- * Python scripting
- ** Vectors can be created with gdb.Type.vector.
- ** Python's atexit.register now works in GDB.
- ** Types can be pretty-printed via a Python API.
- ** Python 3 is now supported (in addition to Python 2.4 or later)
- ** New class gdb.Architecture exposes GDB's internal representation
- of architecture in the Python API.
- ** New method Frame.architecture returns the gdb.Architecture object
- corresponding to the frame's architecture.
- * New Python-based convenience functions:
- ** $_memeq(buf1, buf2, length)
- ** $_streq(str1, str2)
- ** $_strlen(str)
- ** $_regex(str, regex)
- * The 'cd' command now defaults to using '~' (the home directory) if not
- given an argument.
- * The C++ ABI now defaults to the GNU v3 ABI. This has been the
- default for GCC since November 2000.
- * The command 'forward-search' can now be abbreviated as 'fo'.
- * The command 'info tracepoints' can now display 'installed on target'
- or 'not installed on target' for each non-pending location of tracepoint.
- * New configure options
- --enable-libmcheck/--disable-libmcheck
- By default, development versions are built with -lmcheck on hosts
- that support it, in order to help track memory corruption issues.
- Release versions, on the other hand, are built without -lmcheck
- by default. The --enable-libmcheck/--disable-libmcheck configure
- options allow the user to override that default.
- --with-babeltrace/--with-babeltrace-include/--with-babeltrace-lib
- This configure option allows the user to build GDB with
- libbabeltrace using which GDB can read Common Trace Format data.
- * New commands (for set/show, see "New options" below)
- catch signal
- Catch signals. This is similar to "handle", but allows commands and
- conditions to be attached.
- maint info bfds
- List the BFDs known to GDB.
- python-interactive [command]
- pi [command]
- Start a Python interactive prompt, or evaluate the optional command
- and print the result of expressions.
- py [command]
- "py" is a new alias for "python".
- enable type-printer [name]...
- disable type-printer [name]...
- Enable or disable type printers.
- * Removed commands
- ** For the Renesas Super-H architecture, the "regs" command has been removed
- (has been deprecated in GDB 7.5), and "info all-registers" should be used
- instead.
- * New options
- set print type methods (on|off)
- show print type methods
- Control whether method declarations are displayed by "ptype".
- The default is to show them.
- set print type typedefs (on|off)
- show print type typedefs
- Control whether typedef definitions are displayed by "ptype".
- The default is to show them.
- set filename-display basename|relative|absolute
- show filename-display
- Control the way in which filenames is displayed.
- The default is "relative", which preserves previous behavior.
- set trace-buffer-size
- show trace-buffer-size
- Request target to change the size of trace buffer.
- set remote trace-buffer-size-packet auto|on|off
- show remote trace-buffer-size-packet
- Control the use of the remote protocol `QTBuffer:size' packet.
- set debug aarch64
- show debug aarch64
- Control display of debugging messages related to ARM AArch64.
- The default is off.
- set debug coff-pe-read
- show debug coff-pe-read
- Control display of debugging messages related to reading of COFF/PE
- exported symbols.
- set debug mach-o
- show debug mach-o
- Control display of debugging messages related to Mach-O symbols
- processing.
- set debug notification
- show debug notification
- Control display of debugging info for async remote notification.
- * MI changes
- ** Command parameter changes are now notified using new async record
- "=cmd-param-changed".
- ** Trace frame changes caused by command "tfind" are now notified using
- new async record "=traceframe-changed".
- ** The creation, deletion and modification of trace state variables
- are now notified using new async records "=tsv-created",
- "=tsv-deleted" and "=tsv-modified".
- ** The start and stop of process record are now notified using new
- async record "=record-started" and "=record-stopped".
- ** Memory changes are now notified using new async record
- "=memory-changed".
- ** The data-disassemble command response will include a "fullname" field
- containing the absolute file name when source has been requested.
- ** New optional parameter COUNT added to the "-data-write-memory-bytes"
- command, to allow pattern filling of memory areas.
- ** New commands "-catch-load"/"-catch-unload" added for intercepting
- library load/unload events.
- ** The response to breakpoint commands and breakpoint async records
- includes an "installed" field containing a boolean state about each
- non-pending tracepoint location is whether installed on target or not.
- ** Output of the "-trace-status" command includes a "trace-file" field
- containing the name of the trace file being examined. This field is
- optional, and only present when examining a trace file.
- ** The "fullname" field is now always present along with the "file" field,
- even if the file cannot be found by GDB.
- * GDB now supports the "mini debuginfo" section, .gnu_debugdata.
- You must have the LZMA library available when configuring GDB for this
- feature to be enabled. For more information, see:
- http://fedoraproject.org/wiki/Features/MiniDebugInfo
- * New remote packets
- QTBuffer:size
- Set the size of trace buffer. The remote stub reports support for this
- packet to gdb's qSupported query.
- Qbtrace:bts
- Enable Branch Trace Store (BTS)-based branch tracing for the current
- thread. The remote stub reports support for this packet to gdb's
- qSupported query.
- Qbtrace:off
- Disable branch tracing for the current thread. The remote stub reports
- support for this packet to gdb's qSupported query.
- qXfer:btrace:read
- Read the traced branches for the current thread. The remote stub
- reports support for this packet to gdb's qSupported query.
- *** Changes in GDB 7.5
- * GDB now supports x32 ABI. Visit <http://sites.google.com/site/x32abi/>
- for more x32 ABI info.
- * GDB now supports access to MIPS DSP registers on Linux targets.
- * GDB now supports debugging microMIPS binaries.
- * The "info os" command on GNU/Linux can now display information on
- several new classes of objects managed by the operating system:
- "info os procgroups" lists process groups
- "info os files" lists file descriptors
- "info os sockets" lists internet-domain sockets
- "info os shm" lists shared-memory regions
- "info os semaphores" lists semaphores
- "info os msg" lists message queues
- "info os modules" lists loaded kernel modules
- * GDB now has support for SDT (Static Defined Tracing) probes. Currently,
- the only implemented backend is for SystemTap probes (<sys/sdt.h>). You
- can set a breakpoint using the new "-probe, "-pstap" or "-probe-stap"
- options and inspect the probe arguments using the new $_probe_arg family
- of convenience variables. You can obtain more information about SystemTap
- in <http://sourceware.org/systemtap/>.
- * GDB now supports reversible debugging on ARM, it allows you to
- debug basic ARM and THUMB instructions, and provides
- record/replay support.
- * The option "symbol-reloading" has been deleted as it is no longer used.
- * Python scripting
- ** GDB commands implemented in Python can now be put in command class
- "gdb.COMMAND_USER".
- ** The "maint set python print-stack on|off" is now deleted.
- ** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
- apply "flag enum"-style pretty-printing to any enum.
- ** gdb.lookup_symbol can now work when there is no current frame.
- ** gdb.Symbol now has a 'line' attribute, holding the line number in
- the source at which the symbol was defined.
- ** gdb.Symbol now has the new attribute 'needs_frame' and the new
- method 'value'. The former indicates whether the symbol needs a
- frame in order to compute its value, and the latter computes the
- symbol's value.
- ** A new method 'referenced_value' on gdb.Value objects which can
- dereference pointer as well as C++ reference values.
- ** New methods 'global_block' and 'static_block' on gdb.Symtab objects
- which return the global and static blocks (as gdb.Block objects),
- of the underlying symbol table, respectively.
- ** New function gdb.find_pc_line which returns the gdb.Symtab_and_line
- object associated with a PC value.
- ** gdb.Symtab_and_line has new attribute 'last' which holds the end
- of the address range occupied by code for the current source line.
- * Go language support.
- GDB now supports debugging programs written in the Go programming
- language.
- * GDBserver now supports stdio connections.
- E.g. (gdb) target remote | ssh myhost gdbserver - hello
- * The binary "gdbtui" can no longer be built or installed.
- Use "gdb -tui" instead.
- * GDB will now print "flag" enums specially. A flag enum is one where
- all the enumerator values have no bits in common when pairwise
- "and"ed. When printing a value whose type is a flag enum, GDB will
- show all the constants, e.g., for enum E { ONE = 1, TWO = 2}:
- (gdb) print (enum E) 3
- $1 = (ONE | TWO)
- * The filename part of a linespec will now match trailing components
- of a source file name. For example, "break gcc/expr.c:1000" will
- now set a breakpoint in build/gcc/expr.c, but not
- build/libcpp/expr.c.
- * The "info proc" and "generate-core-file" commands will now also
- work on remote targets connected to GDBserver on Linux.
- * The command "info catch" has been removed. It has been disabled
- since December 2007.
- * The "catch exception" and "catch assert" commands now accept
- a condition at the end of the command, much like the "break"
- command does. For instance:
- (gdb) catch exception Constraint_Error if Barrier = True
- Previously, it was possible to add a condition to such catchpoints,
- but it had to be done as a second step, after the catchpoint had been
- created, using the "condition" command.
- * The "info static-tracepoint-marker" command will now also work on
- native Linux targets with in-process agent.
- * GDB can now set breakpoints on inlined functions.
- * The .gdb_index section has been updated to include symbols for
- inlined functions. GDB will ignore older .gdb_index sections by
- default, which could cause symbol files to be loaded more slowly
- until their .gdb_index sections can be recreated. The new command
- "set use-deprecated-index-sections on" will cause GDB to use any older
- .gdb_index sections it finds. This will restore performance, but the
- ability to set breakpoints on inlined functions will be lost in symbol
- files with older .gdb_index sections.
- The .gdb_index section has also been updated to record more information
- about each symbol. This speeds up the "info variables", "info functions"
- and "info types" commands when used with programs having the .gdb_index
- section, as well as speeding up debugging with shared libraries using
- the .gdb_index section.
- * Ada support for GDB/MI Variable Objects has been added.
- * GDB can now support 'breakpoint always-inserted mode' in 'record'
- target.
- * MI changes
- ** New command -info-os is the MI equivalent of "info os".
- ** Output logs ("set logging" and related) now include MI output.
- * New commands
- ** "set use-deprecated-index-sections on|off"
- "show use-deprecated-index-sections on|off"
- Controls the use of deprecated .gdb_index sections.
- ** "catch load" and "catch unload" can be used to stop when a shared
- library is loaded or unloaded, respectively.
- ** "enable count" can be used to auto-disable a breakpoint after
- several hits.
- ** "info vtbl" can be used to show the virtual method tables for
- C++ and Java objects.
- ** "explore" and its sub commands "explore value" and "explore type"
- can be used to recursively explore values and types of
- expressions. These commands are available only if GDB is
- configured with '--with-python'.
- ** "info auto-load" shows status of all kinds of auto-loaded files,
- "info auto-load gdb-scripts" shows status of auto-loading GDB canned
- sequences of commands files, "info auto-load python-scripts"
- shows status of auto-loading Python script files,
- "info auto-load local-gdbinit" shows status of loading init file
- (.gdbinit) from current directory and "info auto-load libthread-db" shows
- status of inferior specific thread debugging shared library loading.
- ** "info auto-load-scripts", "set auto-load-scripts on|off"
- and "show auto-load-scripts" commands have been deprecated, use their
- "info auto-load python-scripts", "set auto-load python-scripts on|off"
- and "show auto-load python-scripts" counterparts instead.
- ** "dprintf location,format,args..." creates a dynamic printf, which
- is basically a breakpoint that does a printf and immediately
- resumes your program's execution, so it is like a printf that you
- can insert dynamically at runtime instead of at compiletime.
- ** "set print symbol"
- "show print symbol"
- Controls whether GDB attempts to display the symbol, if any,
- corresponding to addresses it prints. This defaults to "on", but
- you can set it to "off" to restore GDB's previous behavior.
- * Deprecated commands
- ** For the Renesas Super-H architecture, the "regs" command has been
- deprecated, and "info all-registers" should be used instead.
- * New targets
- Renesas RL78 rl78-*-elf
- HP OpenVMS ia64 ia64-hp-openvms*
- * GDBserver supports evaluation of breakpoint conditions. When
- support is advertised by GDBserver, GDB may be told to send the
- breakpoint conditions in bytecode form to GDBserver. GDBserver
- will only report the breakpoint trigger to GDB when its condition
- evaluates to true.
- * New options
- set mips compression
- show mips compression
- Select the compressed ISA encoding used in functions that have no symbol
- information available. The encoding can be set to either of:
- mips16
- micromips
- and is updated automatically from ELF file flags if available.
- set breakpoint condition-evaluation
- show breakpoint condition-evaluation
- Control whether breakpoint conditions are evaluated by GDB ("host") or by
- GDBserver ("target"). Default option "auto" chooses the most efficient
- available mode.
- This option can improve debugger efficiency depending on the speed of the
- target.
- set auto-load off
- Disable auto-loading globally.
- show auto-load
- Show auto-loading setting of all kinds of auto-loaded files.
- set auto-load gdb-scripts on|off
- show auto-load gdb-scripts
- Control auto-loading of GDB canned sequences of commands files.
- set auto-load python-scripts on|off
- show auto-load python-scripts
- Control auto-loading of Python script files.
- set auto-load local-gdbinit on|off
- show auto-load local-gdbinit
- Control loading of init file (.gdbinit) from current directory.
- set auto-load libthread-db on|off
- show auto-load libthread-db
- Control auto-loading of inferior specific thread debugging shared library.
- set auto-load scripts-directory <dir1>[:<dir2>...]
- show auto-load scripts-directory
- Set a list of directories from which to load auto-loaded scripts.
- Automatically loaded Python scripts and GDB scripts are located in one
- of the directories listed by this option.
- The delimiter (':' above) may differ according to the host platform.
- set auto-load safe-path <dir1>[:<dir2>...]
- show auto-load safe-path
- Set a list of directories from which it is safe to auto-load files.
- The delimiter (':' above) may differ according to the host platform.
- set debug auto-load on|off
- show debug auto-load
- Control display of debugging info for auto-loading the files above.
- set dprintf-style gdb|call|agent
- show dprintf-style
- Control the way in which a dynamic printf is performed; "gdb"
- requests a GDB printf command, while "call" causes dprintf to call a
- function in the inferior. "agent" requests that the target agent
- (such as GDBserver) do the printing.
- set dprintf-function <expr>
- show dprintf-function
- set dprintf-channel <expr>
- show dprintf-channel
- Set the function and optional first argument to the call when using
- the "call" style of dynamic printf.
- set disconnected-dprintf on|off
- show disconnected-dprintf
- Control whether agent-style dynamic printfs continue to be in effect
- after GDB disconnects.
- * New configure options
- --with-auto-load-dir
- Configure default value for the 'set auto-load scripts-directory'
- setting above. It defaults to '$debugdir:$datadir/auto-load',
- $debugdir representing global debugging info directories (available
- via 'show debug-file-directory') and $datadir representing GDB's data
- directory (available via 'show data-directory').
- --with-auto-load-safe-path
- Configure default value for the 'set auto-load safe-path' setting
- above. It defaults to the --with-auto-load-dir setting.
- --without-auto-load-safe-path
- Set 'set auto-load safe-path' to '/', effectively disabling this
- security feature.
- * New remote packets
- z0/z1 conditional breakpoints extension
- The z0/z1 breakpoint insertion packets have been extended to carry
- a list of conditional expressions over to the remote stub depending on the
- condition evaluation mode. The use of this extension can be controlled
- via the "set remote conditional-breakpoints-packet" command.
- QProgramSignals:
- Specify the signals which the remote stub may pass to the debugged
- program without GDB involvement.
- * New command line options
- --init-command=FILE, -ix Like --command, -x but execute it
- before loading inferior.
- --init-eval-command=COMMAND, -iex Like --eval-command=COMMAND, -ex but
- execute it before loading inferior.
- *** Changes in GDB 7.4
- * GDB now handles ambiguous linespecs more consistently; the existing
- FILE:LINE support has been expanded to other types of linespecs. A
- breakpoint will now be set on all matching locations in all
- inferiors, and locations will be added or removed according to
- inferior changes.
- * GDB now allows you to skip uninteresting functions and files when
- stepping with the "skip function" and "skip file" commands.
- * GDB has two new commands: "set remote hardware-watchpoint-length-limit"
- and "show remote hardware-watchpoint-length-limit". These allows to
- set or show the maximum length limit (in bytes) of a remote
- target hardware watchpoint.
- This allows e.g. to use "unlimited" hardware watchpoints with the
- gdbserver integrated in Valgrind version >= 3.7.0. Such Valgrind
- watchpoints are slower than real hardware watchpoints but are
- significantly faster than gdb software watchpoints.
- * Python scripting
- ** The register_pretty_printer function in module gdb.printing now takes
- an optional `replace' argument. If True, the new printer replaces any
- existing one.
- ** The "maint set python print-stack on|off" command has been
- deprecated and will be deleted in GDB 7.5.
- A new command: "set python print-stack none|full|message" has
- replaced it. Additionally, the default for "print-stack" is
- now "message", which just prints the error message without
- the stack trace.
-
- ** A prompt substitution hook (prompt_hook) is now available to the
- Python API.
- ** A new Python module, gdb.prompt has been added to the GDB Python
- modules library. This module provides functionality for
- escape sequences in prompts (used by set/show
- extended-prompt). These escape sequences are replaced by their
- corresponding value.
- ** Python commands and convenience-functions located in
- 'data-directory'/python/gdb/command and
- 'data-directory'/python/gdb/function are now automatically loaded
- on GDB start-up.
- ** Blocks now provide four new attributes. global_block and
- static_block will return the global and static blocks
- respectively. is_static and is_global are boolean attributes
- that indicate if the block is one of those two types.
- ** Symbols now provide the "type" attribute, the type of the symbol.
- ** The "gdb.breakpoint" function has been deprecated in favor of
- "gdb.breakpoints".
- ** A new class "gdb.FinishBreakpoint" is provided to catch the return
- of a function. This class is based on the "finish" command
- available in the CLI.
- ** Type objects for struct and union types now allow access to
- the fields using standard Python dictionary (mapping) methods.
- For example, "some_type['myfield']" now works, as does
- "some_type.items()".
- ** A new event "gdb.new_objfile" has been added, triggered by loading a
- new object file.
- ** A new function, "deep_items" has been added to the gdb.types
- module in the GDB Python modules library. This function returns
- an iterator over the fields of a struct or union type. Unlike
- the standard Python "iteritems" method, it will recursively traverse
- any anonymous fields.
- * MI changes
- ** "*stopped" events can report several new "reason"s, such as
- "solib-event".
- ** Breakpoint changes are now notified using new async records, like
- "=breakpoint-modified".
- ** New command -ada-task-info.
- * libthread-db-search-path now supports two special values: $sdir and $pdir.
- $sdir specifies the default system locations of shared libraries.
- $pdir specifies the directory where the libpthread used by the application
- lives.
- GDB no longer looks in $sdir and $pdir after it has searched the directories
- mentioned in libthread-db-search-path. If you want to search those
- directories, they must be specified in libthread-db-search-path.
- The default value of libthread-db-search-path on GNU/Linux and Solaris
- systems is now "$sdir:$pdir".
- $pdir is not supported by gdbserver, it is currently ignored.
- $sdir is supported by gdbserver.
- * New configure option --with-iconv-bin.
- When using the internationalization support like the one in the GNU C
- library, GDB will invoke the "iconv" program to get a list of supported
- character sets. If this program lives in a non-standard location, one can
- use this option to specify where to find it.
- * When natively debugging programs on PowerPC BookE processors running
- a Linux kernel version 2.6.34 or later, GDB supports masked hardware
- watchpoints, which specify a mask in addition to an address to watch.
- The mask specifies that some bits of an address (the bits which are
- reset in the mask) should be ignored when matching the address accessed
- by the inferior against the watchpoint address. See the "PowerPC Embedded"
- section in the user manual for more details.
- * The new option --once causes GDBserver to stop listening for connections once
- the first connection is made. The listening port used by GDBserver will
- become available after that.
- * New commands "info macros" and "alias" have been added.
- * New function parameters suffix @entry specifies value of function parameter
- at the time the function got called. Entry values are available only since
- gcc version 4.7.
- * New commands
- !SHELL COMMAND
- "!" is now an alias of the "shell" command.
- Note that no space is needed between "!" and SHELL COMMAND.
- * Changed commands
- watch EXPRESSION mask MASK_VALUE
- The watch command now supports the mask argument which allows creation
- of masked watchpoints, if the current architecture supports this feature.
- info auto-load-scripts [REGEXP]
- This command was formerly named "maintenance print section-scripts".
- It is now generally useful and is no longer a maintenance-only command.
- info macro [-all] [--] MACRO
- The info macro command has new options `-all' and `--'. The first for
- printing all definitions of a macro. The second for explicitly specifying
- the end of arguments and the beginning of the macro name in case the macro
- name starts with a hyphen.
- collect[/s] EXPRESSIONS
- The tracepoint collect command now takes an optional modifier "/s"
- that directs it to dereference pointer-to-character types and
- collect the bytes of memory up to a zero byte. The behavior is
- similar to what you see when you use the regular print command on a
- string. An optional integer following the "/s" sets a bound on the
- number of bytes that will be collected.
- tstart [NOTES]
- The trace start command now interprets any supplied arguments as a
- note to be recorded with the trace run, with an effect similar to
- setting the variable trace-notes.
- tstop [NOTES]
- The trace stop command now interprets any arguments as a note to be
- mentioned along with the tstatus report that the trace was stopped
- with a command. The effect is similar to setting the variable
- trace-stop-notes.
- * Tracepoints can now be enabled and disabled at any time after a trace
- experiment has been started using the standard "enable" and "disable"
- commands. It is now possible to start a trace experiment with no enabled
- tracepoints; GDB will display a warning, but will allow the experiment to
- begin, assuming that tracepoints will be enabled as needed while the trace
- is running.
- * Fast tracepoints on 32-bit x86-architectures can now be placed at
- locations with 4-byte instructions, when they were previously
- limited to locations with instructions of 5 bytes or longer.
- * New options
- set debug dwarf2-read
- show debug dwarf2-read
- Turns on or off display of debugging messages related to reading
- DWARF debug info. The default is off.
- set debug symtab-create
- show debug symtab-create
- Turns on or off display of debugging messages related to symbol table
- creation. The default is off.
- set extended-prompt
- show extended-prompt
- Set the GDB prompt, and allow escape sequences to be inserted to
- display miscellaneous information (see 'help set extended-prompt'
- for the list of sequences). This prompt (and any information
- accessed through the escape sequences) is updated every time the
- prompt is displayed.
- set print entry-values (both|compact|default|if-needed|no|only|preferred)
- show print entry-values
- Set printing of frame argument values at function entry. In some cases
- GDB can determine the value of function argument which was passed by the
- function caller, even if the value was modified inside the called function.
- set debug entry-values
- show debug entry-values
- Control display of debugging info for determining frame argument values at
- function entry and virtual tail call frames.
- set basenames-may-differ
- show basenames-may-differ
- Set whether a source file may have multiple base names.
- (A "base name" is the name of a file with the directory part removed.
- Example: The base name of "/home/user/hello.c" is "hello.c".)
- If set, GDB will canonicalize file names (e.g., expand symlinks)
- before comparing them. Canonicalization is an expensive operation,
- but it allows the same file be known by more than one base name.
- If not set (the default), all source files are assumed to have just
- one base name, and gdb will do file name comparisons more efficiently.
- set trace-user
- show trace-user
- set trace-notes
- show trace-notes
- Set a user name and notes for the current and any future trace runs.
- This is useful for long-running and/or disconnected traces, to
- inform others (or yourself) as to who is running the trace, supply
- contact information, or otherwise explain what is going on.
- set trace-stop-notes
- show trace-stop-notes
- Set a note attached to the trace run, that is displayed when the
- trace has been stopped by a tstop command. This is useful for
- instance as an explanation, if you are stopping a trace run that was
- started by someone else.
- * New remote packets
- QTEnable
-
- Dynamically enable a tracepoint in a started trace experiment.
- QTDisable
- Dynamically disable a tracepoint in a started trace experiment.
- QTNotes
- Set the user and notes of the trace run.
- qTP
- Query the current status of a tracepoint.
- qTMinFTPILen
- Query the minimum length of instruction at which a fast tracepoint may
- be placed.
- * Dcache size (number of lines) and line-size are now runtime-configurable
- via "set dcache line" and "set dcache line-size" commands.
- * New targets
- Texas Instruments TMS320C6x tic6x-*-*
- * New Simulators
- Renesas RL78 rl78-*-elf
- *** Changes in GDB 7.3.1
- * The build failure for NetBSD and OpenBSD targets have now been fixed.
- *** Changes in GDB 7.3
- * GDB has a new command: "thread find [REGEXP]".
- It finds the thread id whose name, target id, or thread extra info
- matches the given regular expression.
- * The "catch syscall" command now works on mips*-linux* targets.
- * The -data-disassemble MI command now supports modes 2 and 3 for
- dumping the instruction opcodes.
- * New command line options
- -data-directory DIR Specify DIR as the "data-directory".
- This is mostly for testing purposes.
- * The "maint set python auto-load on|off" command has been renamed to
- "set auto-load-scripts on|off".
- * GDB has a new command: "set directories".
- It is like the "dir" command except that it replaces the
- source path list instead of augmenting it.
- * GDB now understands thread names.
- On GNU/Linux, "info threads" will display the thread name as set by
- prctl or pthread_setname_np.
- There is also a new command, "thread name", which can be used to
- assign a name internally for GDB to display.
- * OpenCL C
- Initial support for the OpenCL C language (http://www.khronos.org/opencl)
- has been integrated into GDB.
- * Python scripting
- ** The function gdb.Write now accepts an optional keyword 'stream'.
- This keyword, when provided, will direct the output to either
- stdout, stderr, or GDB's logging output.
- ** Parameters can now be be sub-classed in Python, and in particular
- you may implement the get_set_doc and get_show_doc functions.
- This improves how Parameter set/show documentation is processed
- and allows for more dynamic content.
- ** Symbols, Symbol Table, Symbol Table and Line, Object Files,
- Inferior, Inferior Thread, Blocks, and Block Iterator APIs now
- have an is_valid method.
- ** Breakpoints can now be sub-classed in Python, and in particular
- you may implement a 'stop' function that is executed each time
- the inferior reaches that breakpoint.
- ** New function gdb.lookup_global_symbol looks up a global symbol.
- ** GDB values in Python are now callable if the value represents a
- function. For example, if 'some_value' represents a function that
- takes two integer parameters and returns a value, you can call
- that function like so:
- result = some_value (10,20)
- ** Module gdb.types has been added.
- It contains a collection of utilities for working with gdb.Types objects:
- get_basic_type, has_field, make_enum_dict.
- ** Module gdb.printing has been added.
- It contains utilities for writing and registering pretty-printers.
- New classes: PrettyPrinter, SubPrettyPrinter,
- RegexpCollectionPrettyPrinter.
- New function: register_pretty_printer.
- ** New commands "info pretty-printers", "enable pretty-printer" and
- "disable pretty-printer" have been added.
- ** gdb.parameter("directories") is now available.
- ** New function gdb.newest_frame returns the newest frame in the
- selected thread.
- ** The gdb.InferiorThread class has a new "name" attribute. This
- holds the thread's name.
- ** Python Support for Inferior events.
- Python scripts can add observers to be notified of events
- occurring in the process being debugged.
- The following events are currently supported:
- - gdb.events.cont Continue event.
- - gdb.events.exited Inferior exited event.
- - gdb.events.stop Signal received, and Breakpoint hit events.
- * C++ Improvements:
- ** GDB now puts template parameters in scope when debugging in an
- instantiation. For example, if you have:
- template<int X> int func (void) { return X; }
- then if you step into func<5>, "print X" will show "5". This
- feature requires proper debuginfo support from the compiler; it
- was added to GCC 4.5.
- ** The motion commands "next", "finish", "until", and "advance" now
- work better when exceptions are thrown. In particular, GDB will
- no longer lose control of the inferior; instead, the GDB will
- stop the inferior at the point at which the exception is caught.
- This functionality requires a change in the exception handling
- code that was introduced in GCC 4.5.
- * GDB now follows GCC's rules on accessing volatile objects when
- reading or writing target state during expression evaluation.
- One notable difference to prior behavior is that "print x = 0"
- no longer generates a read of x; the value of the assignment is
- now always taken directly from the value being assigned.
- * GDB now has some support for using labels in the program's source in
- linespecs. For instance, you can use "advance label" to continue
- execution to a label.
- * GDB now has support for reading and writing a new .gdb_index
- section. This section holds a fast index of DWARF debugging
- information and can be used to greatly speed up GDB startup and
- operation. See the documentation for `save gdb-index' for details.
- * The "watch" command now accepts an optional "-location" argument.
- When used, this causes GDB to watch the memory referred to by the
- expression. Such a watchpoint is never deleted due to it going out
- of scope.
- * GDB now supports thread debugging of core dumps on GNU/Linux.
- GDB now activates thread debugging using the libthread_db library
- when debugging GNU/Linux core dumps, similarly to when debugging
- live processes. As a result, when debugging a core dump file, GDB
- is now able to display pthread_t ids of threads. For example, "info
- threads" shows the same output as when debugging the process when it
- was live. In earlier releases, you'd see something like this:
- (gdb) info threads
- * 1 LWP 6780 main () at main.c:10
- While now you see this:
- (gdb) info threads
- * 1 Thread 0x7f0f5712a700 (LWP 6780) main () at main.c:10
- It is also now possible to inspect TLS variables when debugging core
- dumps.
- When debugging a core dump generated on a machine other than the one
- used to run GDB, you may need to point GDB at the correct
- libthread_db library with the "set libthread-db-search-path"
- command. See the user manual for more details on this command.
- * When natively debugging programs on PowerPC BookE processors running
- a Linux kernel version 2.6.34 or later, GDB supports ranged breakpoints,
- which stop execution of the inferior whenever it executes an instruction
- at any address within the specified range. See the "PowerPC Embedded"
- section in the user manual for more details.
- * New features in the GDB remote stub, GDBserver
- ** GDBserver is now supported on PowerPC LynxOS (versions 4.x and 5.x),
- and i686 LynxOS (version 5.x).
- ** GDBserver is now supported on Blackfin Linux.
- * New native configurations
- ia64 HP-UX ia64-*-hpux*
- * New targets:
- Analog Devices, Inc. Blackfin Processor bfin-*
- * Ada task switching is now supported on sparc-elf targets when
- debugging a program using the Ravenscar Profile. For more information,
- see the "Tasking Support when using the Ravenscar Profile" section
- in the GDB user manual.
- * Guile support was removed.
- * New features in the GNU simulator
- ** The --map-info flag lists all known core mappings.
- ** CFI flashes may be simulated via the "cfi" device.
- *** Changes in GDB 7.2
- * Shared library support for remote targets by default
- When GDB is configured for a generic, non-OS specific target, like
- for example, --target=arm-eabi or one of the many *-*-elf targets,
- GDB now queries remote stubs for loaded shared libraries using the
- `qXfer:libraries:read' packet. Previously, shared library support
- was always disabled for such configurations.
- * C++ Improvements:
- ** Argument Dependent Lookup (ADL)
- In C++ ADL lookup directs function search to the namespaces of its
- arguments even if the namespace has not been imported.
- For example:
- namespace A
- {
- class B { };
- void foo (B) { }
- }
- ...
- A::B b
- foo(b)
- Here the compiler will search for `foo' in the namespace of 'b'
- and find A::foo. GDB now supports this. This construct is commonly
- used in the Standard Template Library for operators.
- ** Improved User Defined Operator Support
- In addition to member operators, GDB now supports lookup of operators
- defined in a namespace and imported with a `using' directive, operators
- defined in the global scope, operators imported implicitly from an
- anonymous namespace, and the ADL operators mentioned in the previous
- entry.
- GDB now also supports proper overload resolution for all the previously
- mentioned flavors of operators.
- ** static const class members
- Printing of static const class members that are initialized in the
- class definition has been fixed.
- * Windows Thread Information Block access.
- On Windows targets, GDB now supports displaying the Windows Thread
- Information Block (TIB) structure. This structure is visible either
- by using the new command `info w32 thread-information-block' or, by
- dereferencing the new convenience variable named `$_tlb', a
- thread-specific pointer to the TIB. This feature is also supported
- when remote debugging using GDBserver.
- * Static tracepoints
- Static tracepoints are calls in the user program into a tracing
- library. One such library is a port of the LTTng kernel tracer to
- userspace --- UST (LTTng Userspace Tracer, http://lttng.org/ust).
- When debugging with GDBserver, GDB now supports combining the GDB
- tracepoint machinery with such libraries. For example: the user can
- use GDB to probe a static tracepoint marker (a call from the user
- program into the tracing library) with the new "strace" command (see
- "New commands" below). This creates a "static tracepoint" in the
- breakpoint list, that can be manipulated with the same feature set
- as fast and regular tracepoints. E.g., collect registers, local and
- global variables, collect trace state variables, and define
- tracepoint conditions. In addition, the user can collect extra
- static tracepoint marker specific data, by collecting the new
- $_sdata internal variable. When analyzing the trace buffer, you can
- inspect $_sdata like any other variable available to GDB. For more
- information, see the "Tracepoints" chapter in GDB user manual. New
- remote packets have been defined to support static tracepoints, see
- the "New remote packets" section below.
- * Better reconstruction of tracepoints after disconnected tracing
- GDB will attempt to download the original source form of tracepoint
- definitions when starting a trace run, and then will upload these
- upon reconnection to the target, resulting in a more accurate
- reconstruction of the tracepoints that are in use on the target.
- * Observer mode
- You can now exercise direct control over the ways that GDB can
- affect your program. For instance, you can disallow the setting of
- breakpoints, so that the program can run continuously (assuming
- non-stop mode). In addition, the "observer" variable is available
- to switch all of the different controls; in observer mode, GDB
- cannot affect the target's behavior at all, which is useful for
- tasks like diagnosing live systems in the field.
- * The new convenience variable $_thread holds the number of the
- current thread.
- * New remote packets
- qGetTIBAddr
- Return the address of the Windows Thread Information Block of a given thread.
- qRelocInsn
- In response to several of the tracepoint packets, the target may now
- also respond with a number of intermediate `qRelocInsn' request
- packets before the final result packet, to have GDB handle
- relocating an instruction to execute at a different address. This
- is particularly useful for stubs that support fast tracepoints. GDB
- reports support for this feature in the qSupported packet.
- qTfSTM, qTsSTM
- List static tracepoint markers in the target program.
- qTSTMat
- List static tracepoint markers at a given address in the target
- program.
- qXfer:statictrace:read
- Read the static trace data collected (by a `collect $_sdata'
- tracepoint action). The remote stub reports support for this packet
- to gdb's qSupported query.
- QAllow
- Send the current settings of GDB's permission flags.
- QTDPsrc
- Send part of the source (textual) form of a tracepoint definition,
- which includes location, conditional, and action list.
- * The source command now accepts a -s option to force searching for the
- script in the source search path even if the script name specifies
- a directory.
- * New features in the GDB remote stub, GDBserver
- - GDBserver now support tracepoints (including fast tracepoints, and
- static tracepoints). The feature is currently supported by the
- i386-linux and amd64-linux builds. See the "Tracepoints support
- in gdbserver" section in the manual for more information.
- GDBserver JIT compiles the tracepoint's conditional agent
- expression bytecode into native code whenever possible for low
- overhead dynamic tracepoints conditionals. For such tracepoints,
- an expression that examines program state is evaluated when the
- tracepoint is reached, in order to determine whether to capture
- trace data. If the condition is simple and false, processing the
- tracepoint finishes very quickly and no data is gathered.
- GDBserver interfaces with the UST (LTTng Userspace Tracer) library
- for static tracepoints support.
- - GDBserver now supports x86_64 Windows 64-bit debugging.
- * GDB now sends xmlRegisters= in qSupported packet to indicate that
- it understands register description.
- * The --batch flag now disables pagination and queries.
- * X86 general purpose registers
- GDB now supports reading/writing byte, word and double-word x86
- general purpose registers directly. This means you can use, say,
- $ah or $ax to refer, respectively, to the byte register AH and
- 16-bit word register AX that are actually portions of the 32-bit
- register EAX or 64-bit register RAX.
- * The `commands' command now accepts a range of breakpoints to modify.
- A plain `commands' following a command that creates multiple
- breakpoints affects all the breakpoints set by that command. This
- applies to breakpoints set by `rbreak', and also applies when a
- single `break' command creates multiple breakpoints (e.g.,
- breakpoints on overloaded c++ functions).
- * The `rbreak' command now accepts a filename specification as part of
- its argument, limiting the functions selected by the regex to those
- in the specified file.
- * Support for remote debugging Windows and SymbianOS shared libraries
- from Unix hosts has been improved. Non Windows GDB builds now can
- understand target reported file names that follow MS-DOS based file
- system semantics, such as file names that include drive letters and
- use the backslash character as directory separator. This makes it
- possible to transparently use the "set sysroot" and "set
- solib-search-path" on Unix hosts to point as host copies of the
- target's shared libraries. See the new command "set
- target-file-system-kind" described below, and the "Commands to
- specify files" section in the user manual for more information.
- * New commands
- eval template, expressions...
- Convert the values of one or more expressions under the control
- of the string template to a command line, and call it.
- set target-file-system-kind unix|dos-based|auto
- show target-file-system-kind
- Set or show the assumed file system kind for target reported file
- names.
- save breakpoints <filename>
- Save all current breakpoint definitions to a file suitable for use
- in a later debugging session. To read the saved breakpoint
- definitions, use the `source' command.
- `save tracepoints' is a new alias for `save-tracepoints'. The latter
- is now deprecated.
- info static-tracepoint-markers
- Display information about static tracepoint markers in the target.
- strace FN | FILE:LINE | *ADDR | -m MARKER_ID
- Define a static tracepoint by probing a marker at the given
- function, line, address, or marker ID.
- set observer on|off
- show observer
- Enable and disable observer mode.
- set may-write-registers on|off
- set may-write-memory on|off
- set may-insert-breakpoints on|off
- set may-insert-tracepoints on|off
- set may-insert-fast-tracepoints on|off
- set may-interrupt on|off
- Set individual permissions for GDB effects on the target. Note that
- some of these settings can have undesirable or surprising
- consequences, particularly when changed in the middle of a session.
- For instance, disabling the writing of memory can prevent
- breakpoints from being inserted, cause single-stepping to fail, or
- even crash your program, if you disable after breakpoints have been
- inserted. However, GDB should not crash.
- set record memory-query on|off
- show record memory-query
- Control whether to stop the inferior if memory changes caused
- by an instruction cannot be recorded.
- * Changed commands
- disassemble
- The disassemble command now supports "start,+length" form of two arguments.
- * Python scripting
- ** GDB now provides a new directory location, called the python directory,
- where Python scripts written for GDB can be installed. The location
- of that directory is <data-directory>/python, where <data-directory>
- is the GDB data directory. For more details, see section `Scripting
- GDB using Python' in the manual.
- ** The GDB Python API now has access to breakpoints, symbols, symbol
- tables, program spaces, inferiors, threads and frame's code blocks.
- Additionally, GDB Parameters can now be created from the API, and
- manipulated via set/show in the CLI.
- ** New functions gdb.target_charset, gdb.target_wide_charset,
- gdb.progspaces, gdb.current_progspace, and gdb.string_to_argv.
- ** New exception gdb.GdbError.
- ** Pretty-printers are now also looked up in the current program space.
- ** Pretty-printers can now be individually enabled and disabled.
- ** GDB now looks for names of Python scripts to auto-load in a
- special section named `.debug_gdb_scripts', in addition to looking
- for a OBJFILE-gdb.py script when OBJFILE is read by the debugger.
- * Tracepoint actions were unified with breakpoint commands. In particular,
- there are no longer differences in "info break" output for breakpoints and
- tracepoints and the "commands" command can be used for both tracepoints and
- regular breakpoints.
- * New targets
- ARM Symbian arm*-*-symbianelf*
- * D language support.
- GDB now supports debugging programs written in the D programming
- language.
- * GDB now supports the extended ptrace interface for PowerPC which is
- available since Linux kernel version 2.6.34. This automatically enables
- any hardware breakpoints and additional hardware watchpoints available in
- the processor. The old ptrace interface exposes just one hardware
- watchpoint and no hardware breakpoints.
- * GDB is now able to use the Data Value Compare (DVC) register available on
- embedded PowerPC processors to implement in hardware simple watchpoint
- conditions of the form:
- watch ADDRESS|VARIABLE if ADDRESS|VARIABLE == CONSTANT EXPRESSION
- This works in native GDB running on Linux kernels with the extended ptrace
- interface mentioned above.
- *** Changes in GDB 7.1
- * C++ Improvements
- ** Namespace Support
- GDB now supports importing of namespaces in C++. This enables the
- user to inspect variables from imported namespaces. Support for
- namepace aliasing has also been added. So, if a namespace is
- aliased in the current scope (e.g. namepace C=A; ) the user can
- print variables using the alias (e.g. (gdb) print C::x).
- ** Bug Fixes
- All known bugs relating to the printing of virtual base class were
- fixed. It is now possible to call overloaded static methods using a
- qualified name.
- ** Cast Operators
- The C++ cast operators static_cast<>, dynamic_cast<>, const_cast<>,
- and reinterpret_cast<> are now handled by the C++ expression parser.
- * New targets
- Xilinx MicroBlaze microblaze-*-*
- Renesas RX rx-*-elf
- * New Simulators
- Xilinx MicroBlaze microblaze
- Renesas RX rx
- * Multi-program debugging.
- GDB now has support for multi-program (a.k.a. multi-executable or
- multi-exec) debugging. This allows for debugging multiple inferiors
- simultaneously each running a different program under the same GDB
- session. See "Debugging Multiple Inferiors and Programs" in the
- manual for more information. This implied some user visible changes
- in the multi-inferior support. For example, "info inferiors" now
- lists inferiors that are not running yet or that have exited
- already. See also "New commands" and "New options" below.
- * New tracing features
- GDB's tracepoint facility now includes several new features:
- ** Trace state variables
- GDB tracepoints now include support for trace state variables, which
- are variables managed by the target agent during a tracing
- experiment. They are useful for tracepoints that trigger each
- other, so for instance one tracepoint can count hits in a variable,
- and then a second tracepoint has a condition that is true when the
- count reaches a particular value. Trace state variables share the
- $-syntax of GDB convenience variables, and can appear in both
- tracepoint actions and condition expressions. Use the "tvariable"
- command to create, and "info tvariables" to view; see "Trace State
- Variables" in the manual for more detail.
- ** Fast tracepoints
- GDB now includes an option for defining fast tracepoints, which
- targets may implement more efficiently, such as by installing a jump
- into the target agent rather than a trap instruction. The resulting
- speedup can be by two orders of magnitude or more, although the
- tradeoff is that some program locations on some target architectures
- might not allow fast tracepoint installation, for instance if the
- instruction to be replaced is shorter than the jump. To request a
- fast tracepoint, use the "ftrace" command, with syntax identical to
- the regular trace command.
- ** Disconnected tracing
- It is now possible to detach GDB from the target while it is running
- a trace experiment, then reconnect later to see how the experiment
- is going. In addition, a new variable disconnected-tracing lets you
- tell the target agent whether to continue running a trace if the
- connection is lost unexpectedly.
- ** Trace files
- GDB now has the ability to save the trace buffer into a file, and
- then use that file as a target, similarly to you can do with
- corefiles. You can select trace frames, print data that was
- collected in them, and use tstatus to display the state of the
- tracing run at the moment that it was saved. To create a trace
- file, use "tsave <filename>", and to use it, do "target tfile
- <name>".
- ** Circular trace buffer
- You can ask the target agent to handle the trace buffer as a
- circular buffer, discarding the oldest trace frames to make room for
- newer ones, by setting circular-trace-buffer to on. This feature may
- not be available for all target agents.
- * Changed commands
- disassemble
- The disassemble command, when invoked with two arguments, now requires
- the arguments to be comma-separated.
- info variables
- The info variables command now displays variable definitions. Files
- which only declare a variable are not shown.
- source
- The source command is now capable of sourcing Python scripts.
- This feature is dependent on the debugger being build with Python
- support.
- Related to this enhancement is also the introduction of a new command
- "set script-extension" (see below).
- * New commands (for set/show, see "New options" below)
- record save [<FILENAME>]
- Save a file (in core file format) containing the process record
- execution log for replay debugging at a later time.
- record restore <FILENAME>
- Restore the process record execution log that was saved at an
- earlier time, for replay debugging.
- add-inferior [-copies <N>] [-exec <FILENAME>]
- Add a new inferior.
- clone-inferior [-copies <N>] [ID]
- Make a new inferior ready to execute the same program another
- inferior has loaded.
- remove-inferior ID
- Remove an inferior.
- maint info program-spaces
- List the program spaces loaded into GDB.
- set remote interrupt-sequence [Ctrl-C | BREAK | BREAK-g]
- show remote interrupt-sequence
- Allow the user to select one of ^C, a BREAK signal or BREAK-g
- as the sequence to the remote target in order to interrupt the execution.
- Ctrl-C is a default. Some system prefers BREAK which is high level of
- serial line for some certain time. Linux kernel prefers BREAK-g, a.k.a
- Magic SysRq g. It is BREAK signal and character 'g'.
- set remote interrupt-on-connect [on | off]
- show remote interrupt-on-connect
- When interrupt-on-connect is ON, gdb sends interrupt-sequence to
- remote target when gdb connects to it. This is needed when you debug
- Linux kernel.
- set remotebreak [on | off]
- show remotebreak
- Deprecated. Use "set/show remote interrupt-sequence" instead.
- tvariable $NAME [ = EXP ]
- Create or modify a trace state variable.
- info tvariables
- List trace state variables and their values.
- delete tvariable $NAME ...
- Delete one or more trace state variables.
- teval EXPR, ...
- Evaluate the given expressions without collecting anything into the
- trace buffer. (Valid in tracepoint actions only.)
- ftrace FN / FILE:LINE / *ADDR
- Define a fast tracepoint at the given function, line, or address.
- * New expression syntax
- GDB now parses the 0b prefix of binary numbers the same way as GCC does.
- GDB now parses 0b101010 identically with 42.
- * New options
- set follow-exec-mode new|same
- show follow-exec-mode
- Control whether GDB reuses the same inferior across an exec call or
- creates a new one. This is useful to be able to restart the old
- executable after the inferior having done an exec call.
- set default-collect EXPR, ...
- show default-collect
- Define a list of expressions to be collected at each tracepoint.
- This is a useful way to ensure essential items are not overlooked,
- such as registers or a critical global variable.
- set disconnected-tracing
- show disconnected-tracing
- If set to 1, the target is instructed to continue tracing if it
- loses its connection to GDB. If 0, the target is to stop tracing
- upon disconnection.
- set circular-trace-buffer
- show circular-trace-buffer
- If set to on, the target is instructed to use a circular trace buffer
- and discard the oldest trace frames instead of stopping the trace due
- to a full trace buffer. If set to off, the trace stops when the buffer
- fills up. Some targets may not support this.
- set script-extension off|soft|strict
- show script-extension
- If set to "off", the debugger does not perform any script language
- recognition, and all sourced files are assumed to be GDB scripts.
- If set to "soft" (the default), files are sourced according to
- filename extension, falling back to GDB scripts if the first
- evaluation failed.
- If set to "strict", files are sourced according to filename extension.
- set ada trust-PAD-over-XVS on|off
- show ada trust-PAD-over-XVS
- If off, activate a workaround against a bug in the debugging information
- generated by the compiler for PAD types (see gcc/exp_dbug.ads in
- the GCC sources for more information about the GNAT encoding and
- PAD types in particular). It is always safe to set this option to
- off, but this introduces a slight performance penalty. The default
- is on.
- * Python API Improvements
- ** GDB provides the new class gdb.LazyString. This is useful in
- some pretty-printing cases. The new method gdb.Value.lazy_string
- provides a simple way to create objects of this type.
- ** The fields returned by gdb.Type.fields now have an
- `is_base_class' attribute.
- ** The new method gdb.Type.range returns the range of an array type.
- ** The new method gdb.parse_and_eval can be used to parse and
- evaluate an expression.
- * New remote packets
- QTDV
- Define a trace state variable.
- qTV
- Get the current value of a trace state variable.
- QTDisconnected
- Set desired tracing behavior upon disconnection.
- QTBuffer:circular
- Set the trace buffer to be linear or circular.
- qTfP, qTsP
- Get data about the tracepoints currently in use.
- * Bug fixes
- Process record now works correctly with hardware watchpoints.
- Multiple bug fixes have been made to the mips-irix port, making it
- much more reliable. In particular:
- - Debugging threaded applications is now possible again. Previously,
- GDB would hang while starting the program, or while waiting for
- the program to stop at a breakpoint.
- - Attaching to a running process no longer hangs.
- - An error occurring while loading a core file has been fixed.
- - Changing the value of the PC register now works again. This fixes
- problems observed when using the "jump" command, or when calling
- a function from GDB, or even when assigning a new value to $pc.
- - With the "finish" and "return" commands, the return value for functions
- returning a small array is now correctly printed.
- - It is now possible to break on shared library code which gets executed
- during a shared library init phase (code executed while executing
- their .init section). Previously, the breakpoint would have no effect.
- - GDB is now able to backtrace through the signal handler for
- non-threaded programs.
- PIE (Position Independent Executable) programs debugging is now supported.
- This includes debugging execution of PIC (Position Independent Code) shared
- libraries although for that, it should be possible to run such libraries as an
- executable program.
- *** Changes in GDB 7.0
- * GDB now has an interface for JIT compilation. Applications that
- dynamically generate code can create symbol files in memory and register
- them with GDB. For users, the feature should work transparently, and
- for JIT developers, the interface is documented in the GDB manual in the
- "JIT Compilation Interface" chapter.
- * Tracepoints may now be conditional. The syntax is as for
- breakpoints; either an "if" clause appended to the "trace" command,
- or the "condition" command is available. GDB sends the condition to
- the target for evaluation using the same bytecode format as is used
- for tracepoint actions.
- * The disassemble command now supports: an optional /r modifier, print the
- raw instructions in hex as well as in symbolic form, and an optional /m
- modifier to print mixed source+assembly.
- * Process record and replay
- In a architecture environment that supports ``process record and
- replay'', ``process record and replay'' target can record a log of
- the process execution, and replay it with both forward and reverse
- execute commands.
- * Reverse debugging: GDB now has new commands reverse-continue, reverse-
- step, reverse-next, reverse-finish, reverse-stepi, reverse-nexti, and
- set execution-direction {forward|reverse}, for targets that support
- reverse execution.
- * GDB now supports hardware watchpoints on MIPS/Linux systems. This
- feature is available with a native GDB running on kernel version
- 2.6.28 or later.
- * GDB now has support for multi-byte and wide character sets on the
- target. Strings whose character type is wchar_t, char16_t, or
- char32_t are now correctly printed. GDB supports wide- and unicode-
- literals in C, that is, L'x', L"string", u'x', u"string", U'x', and
- U"string" syntax. And, GDB allows the "%ls" and "%lc" formats in
- `printf'. This feature requires iconv to work properly; if your
- system does not have a working iconv, GDB can use GNU libiconv. See
- the installation instructions for more information.
- * GDB now supports automatic retrieval of shared library files from
- remote targets. To use this feature, specify a system root that begins
- with the `remote:' prefix, either via the `set sysroot' command or via
- the `--with-sysroot' configure-time option.
- * "info sharedlibrary" now takes an optional regex of libraries to show,
- and it now reports if a shared library has no debugging information.
- * Commands `set debug-file-directory', `set solib-search-path' and `set args'
- now complete on file names.
- * When completing in expressions, gdb will attempt to limit
- completions to allowable structure or union fields, where appropriate.
- For instance, consider:
- # struct example { int f1; double f2; };
- # struct example variable;
- (gdb) p variable.
- If the user types TAB at the end of this command line, the available
- completions will be "f1" and "f2".
- * Inlined functions are now supported. They show up in backtraces, and
- the "step", "next", and "finish" commands handle them automatically.
- * GDB now supports the token-splicing (##) and stringification (#)
- operators when expanding macros. It also supports variable-arity
- macros.
- * GDB now supports inspecting extra signal information, exported by
- the new $_siginfo convenience variable. The feature is currently
- implemented on linux ARM, i386 and amd64.
- * GDB can now display the VFP floating point registers and NEON vector
- registers on ARM targets. Both ARM GNU/Linux native GDB and gdbserver
- can provide these registers (requires Linux 2.6.30 or later). Remote
- and simulator targets may also provide them.
- * New remote packets
- qSearch:memory:
- Search memory for a sequence of bytes.
- QStartNoAckMode
- Turn off `+'/`-' protocol acknowledgments to permit more efficient
- operation over reliable transport links. Use of this packet is
- controlled by the `set remote noack-packet' command.
- vKill
- Kill the process with the specified process ID. Use this in preference
- to `k' when multiprocess protocol extensions are supported.
- qXfer:osdata:read
- Obtains additional operating system information
- qXfer:siginfo:read
- qXfer:siginfo:write
- Read or write additional signal information.
- * Removed remote protocol undocumented extension
- An undocumented extension to the remote protocol's `S' stop reply
- packet that permitted the stub to pass a process id was removed.
- Remote servers should use the `T' stop reply packet instead.
- * GDB now supports multiple function calling conventions according to the
- DWARF-2 DW_AT_calling_convention function attribute.
-
- * The SH target utilizes the aforementioned change to distinguish between gcc
- and Renesas calling convention. It also adds the new CLI commands
- `set/show sh calling-convention'.
- * GDB can now read compressed debug sections, as produced by GNU gold
- with the --compress-debug-sections=zlib flag.
- * 64-bit core files are now supported on AIX.
- * Thread switching is now supported on Tru64.
- * Watchpoints can now be set on unreadable memory locations, e.g. addresses
- which will be allocated using malloc later in program execution.
- * The qXfer:libraries:read remote protocol packet now allows passing a
- list of section offsets.
- * On GNU/Linux, GDB can now attach to stopped processes. Several race
- conditions handling signals delivered during attach or thread creation
- have also been fixed.
- * GDB now supports the use of DWARF boolean types for Ada's type Boolean.
- From the user's standpoint, all unqualified instances of True and False
- are treated as the standard definitions, regardless of context.
- * GDB now parses C++ symbol and type names more flexibly. For
- example, given:
- template<typename T> class C { };
- C<char const *> c;
- GDB will now correctly handle all of:
- ptype C<char const *>
- ptype C<char const*>
- ptype C<const char *>
- ptype C<const char*>
- * New features in the GDB remote stub, gdbserver
- - The "--wrapper" command-line argument tells gdbserver to use a
- wrapper program to launch programs for debugging.
- - On PowerPC and S/390 targets, it is now possible to use a single
- gdbserver executable to debug both 32-bit and 64-bit programs.
- (This requires gdbserver itself to be built as a 64-bit executable.)
- - gdbserver uses the new noack protocol mode for TCP connections to
- reduce communications latency, if also supported and enabled in GDB.
- - Support for the sparc64-linux-gnu target is now included in
- gdbserver.
- - The amd64-linux build of gdbserver now supports debugging both
- 32-bit and 64-bit programs.
- - The i386-linux, amd64-linux, and i386-win32 builds of gdbserver
- now support hardware watchpoints, and will use them automatically
- as appropriate.
- * Python scripting
- GDB now has support for scripting using Python. Whether this is
- available is determined at configure time.
- New GDB commands can now be written in Python.
- * Ada tasking support
- Ada tasks can now be inspected in GDB. The following commands have
- been introduced:
- info tasks
- Print the list of Ada tasks.
- info task N
- Print detailed information about task number N.
- task
- Print the task number of the current task.
- task N
- Switch the context of debugging to task number N.
- * Support for user-defined prefixed commands. The "define" command can
- add new commands to existing prefixes, e.g. "target".
- * Multi-inferior, multi-process debugging.
- GDB now has generalized support for multi-inferior debugging. See
- "Debugging Multiple Inferiors" in the manual for more information.
- Although availability still depends on target support, the command
- set is more uniform now. The GNU/Linux specific multi-forks support
- has been migrated to this new framework. This implied some user
- visible changes; see "New commands" and also "Removed commands"
- below.
- * Target descriptions can now describe the target OS ABI. See the
- "Target Description Format" section in the user manual for more
- information.
- * Target descriptions can now describe "compatible" architectures
- to indicate that the target can execute applications for a different
- architecture in addition to those for the main target architecture.
- See the "Target Description Format" section in the user manual for
- more information.
- * Multi-architecture debugging.
- GDB now includes general supports for debugging applications on
- hybrid systems that use more than one single processor architecture
- at the same time. Each such hybrid architecture still requires
- specific support to be added. The only hybrid architecture supported
- in this version of GDB is the Cell Broadband Engine.
- * GDB now supports integrated debugging of Cell/B.E. applications that
- use both the PPU and SPU architectures. To enable support for hybrid
- Cell/B.E. debugging, you need to configure GDB to support both the
- powerpc-linux or powerpc64-linux and the spu-elf targets, using the
- --enable-targets configure option.
- * Non-stop mode debugging.
- For some targets, GDB now supports an optional mode of operation in
- which you can examine stopped threads while other threads continue
- to execute freely. This is referred to as non-stop mode, with the
- old mode referred to as all-stop mode. See the "Non-Stop Mode"
- section in the user manual for more information.
- To be able to support remote non-stop debugging, a remote stub needs
- to implement the non-stop mode remote protocol extensions, as
- described in the "Remote Non-Stop" section of the user manual. The
- GDB remote stub, gdbserver, has been adjusted to support these
- extensions on linux targets.
- * New commands (for set/show, see "New options" below)
- catch syscall [NAME(S) | NUMBER(S)]
- Catch system calls. Arguments, which should be names of system
- calls or their numbers, mean catch only those syscalls. Without
- arguments, every syscall will be caught. When the inferior issues
- any of the specified syscalls, GDB will stop and announce the system
- call, both when it is called and when its call returns. This
- feature is currently available with a native GDB running on the
- Linux Kernel, under the following architectures: x86, x86_64,
- PowerPC and PowerPC64.
- find [/size-char] [/max-count] start-address, end-address|+search-space-size,
- val1 [, val2, ...]
- Search memory for a sequence of bytes.
- maint set python print-stack
- maint show python print-stack
- Show a stack trace when an error is encountered in a Python script.
- python [CODE]
- Invoke CODE by passing it to the Python interpreter.
- macro define
- macro list
- macro undef
- These allow macros to be defined, undefined, and listed
- interactively.
- info os processes
- Show operating system information about processes.
- info inferiors
- List the inferiors currently under GDB's control.
- inferior NUM
- Switch focus to inferior number NUM.
- detach inferior NUM
- Detach from inferior number NUM.
- kill inferior NUM
- Kill inferior number NUM.
- * New options
- set spu stop-on-load
- show spu stop-on-load
- Control whether to stop for new SPE threads during Cell/B.E. debugging.
- set spu auto-flush-cache
- show spu auto-flush-cache
- Control whether to automatically flush the software-managed cache
- during Cell/B.E. debugging.
- set sh calling-convention
- show sh calling-convention
- Control the calling convention used when calling SH target functions.
- set debug timestamp
- show debug timestamp
- Control display of timestamps with GDB debugging output.
- set disassemble-next-line
- show disassemble-next-line
- Control display of disassembled source lines or instructions when
- the debuggee stops.
- set remote noack-packet
- show remote noack-packet
- Set/show the use of remote protocol QStartNoAckMode packet. See above
- under "New remote packets."
- set remote query-attached-packet
- show remote query-attached-packet
- Control use of remote protocol `qAttached' (query-attached) packet.
- set remote read-siginfo-object
- show remote read-siginfo-object
- Control use of remote protocol `qXfer:siginfo:read' (read-siginfo-object)
- packet.
- set remote write-siginfo-object
- show remote write-siginfo-object
- Control use of remote protocol `qXfer:siginfo:write' (write-siginfo-object)
- packet.
- set remote reverse-continue
- show remote reverse-continue
- Control use of remote protocol 'bc' (reverse-continue) packet.
- set remote reverse-step
- show remote reverse-step
- Control use of remote protocol 'bs' (reverse-step) packet.
- set displaced-stepping
- show displaced-stepping
- Control displaced stepping mode. Displaced stepping is a way to
- single-step over breakpoints without removing them from the debuggee.
- Also known as "out-of-line single-stepping".
- set debug displaced
- show debug displaced
- Control display of debugging info for displaced stepping.
- maint set internal-error
- maint show internal-error
- Control what GDB does when an internal error is detected.
- maint set internal-warning
- maint show internal-warning
- Control what GDB does when an internal warning is detected.
- set exec-wrapper
- show exec-wrapper
- unset exec-wrapper
- Use a wrapper program to launch programs for debugging.
- set multiple-symbols (all|ask|cancel)
- show multiple-symbols
- The value of this variable can be changed to adjust the debugger behavior
- when an expression or a breakpoint location contains an ambiguous symbol
- name (an overloaded function name, for instance).
-
- set breakpoint always-inserted
- show breakpoint always-inserted
- Keep breakpoints always inserted in the target, as opposed to inserting
- them when resuming the target, and removing them when the target stops.
- This option can improve debugger performance on slow remote targets.
- set arm fallback-mode (arm|thumb|auto)
- show arm fallback-mode
- set arm force-mode (arm|thumb|auto)
- show arm force-mode
- These commands control how ARM GDB determines whether instructions
- are ARM or Thumb. The default for both settings is auto, which uses
- the current CPSR value for instructions without symbols; previous
- versions of GDB behaved as if "set arm fallback-mode arm".
- set disable-randomization
- show disable-randomization
- Standalone programs run with the virtual address space randomization enabled
- by default on some platforms. This option keeps the addresses stable across
- multiple debugging sessions.
- set non-stop
- show non-stop
- Control whether other threads are stopped or not when some thread hits
- a breakpoint.
- set target-async
- show target-async
- Requests that asynchronous execution is enabled in the target, if available.
- In this case, it's possible to resume target in the background, and interact
- with GDB while the target is running. "show target-async" displays the
- current state of asynchronous execution of the target.
- set target-wide-charset
- show target-wide-charset
- The target-wide-charset is the name of the character set that GDB
- uses when printing characters whose type is wchar_t.
- set tcp auto-retry (on|off)
- show tcp auto-retry
- set tcp connect-timeout
- show tcp connect-timeout
- These commands allow GDB to retry failed TCP connections to a remote stub
- with a specified timeout period; this is useful if the stub is launched
- in parallel with GDB but may not be ready to accept connections immediately.
- set libthread-db-search-path
- show libthread-db-search-path
- Control list of directories which GDB will search for appropriate
- libthread_db.
- set schedule-multiple (on|off)
- show schedule-multiple
- Allow GDB to resume all threads of all processes or only threads of
- the current process.
- set stack-cache
- show stack-cache
- Use more aggressive caching for accesses to the stack. This improves
- performance of remote debugging (particularly backtraces) without
- affecting correctness.
- set interactive-mode (on|off|auto)
- show interactive-mode
- Control whether GDB runs in interactive mode (on) or not (off).
- When in interactive mode, GDB waits for the user to answer all
- queries. Otherwise, GDB does not wait and assumes the default
- answer. When set to auto (the default), GDB determines which
- mode to use based on the stdin settings.
- * Removed commands
- info forks
- For program forks, this is replaced by the new more generic `info
- inferiors' command. To list checkpoints, you can still use the
- `info checkpoints' command, which was an alias for the `info forks'
- command.
- fork NUM
- Replaced by the new `inferior' command. To switch between
- checkpoints, you can still use the `restart' command, which was an
- alias for the `fork' command.
- process PID
- This is removed, since some targets don't have a notion of
- processes. To switch between processes, you can still use the
- `inferior' command using GDB's own inferior number.
- delete fork NUM
- For program forks, this is replaced by the new more generic `kill
- inferior' command. To delete a checkpoint, you can still use the
- `delete checkpoint' command, which was an alias for the `delete
- fork' command.
- detach fork NUM
- For program forks, this is replaced by the new more generic `detach
- inferior' command. To detach a checkpoint, you can still use the
- `detach checkpoint' command, which was an alias for the `detach
- fork' command.
- * New native configurations
- x86/x86_64 Darwin i[34567]86-*-darwin*
- x86_64 MinGW x86_64-*-mingw*
- * New targets
- Lattice Mico32 lm32-*
- x86 DICOS i[34567]86-*-dicos*
- x86_64 DICOS x86_64-*-dicos*
- S+core 3 score-*-*
- * The GDB remote stub, gdbserver, now supports x86 Windows CE
- (mingw32ce) debugging.
- * Removed commands
- catch load
- catch unload
- These commands were actually not implemented on any target.
- *** Changes in GDB 6.8
- * New native configurations
- NetBSD/hppa hppa*-*netbsd*
- Xtensa GNU/Linux xtensa*-*-linux*
- * New targets
- NetBSD/hppa hppa*-*-netbsd*
- Xtensa GNU/Linux xtensa*-*-linux*
- * Change in command line behavior -- corefiles vs. process ids.
- When the '-p NUMBER' or '--pid NUMBER' options are used, and
- attaching to process NUMBER fails, GDB no longer attempts to open a
- core file named NUMBER. Attaching to a program using the -c option
- is no longer supported. Instead, use the '-p' or '--pid' options.
- * GDB can now be built as a native debugger for debugging Windows x86
- (mingw32) Portable Executable (PE) programs.
- * Pending breakpoints no longer change their number when their address
- is resolved.
- * GDB now supports breakpoints with multiple locations,
- including breakpoints on C++ constructors, inside C++ templates,
- and in inlined functions.
- * GDB's ability to debug optimized code has been improved. GDB more
- accurately identifies function bodies and lexical blocks that occupy
- more than one contiguous range of addresses.
- * Target descriptions can now describe registers for PowerPC.
- * The GDB remote stub, gdbserver, now supports the AltiVec and SPE
- registers on PowerPC targets.
- * The GDB remote stub, gdbserver, now supports thread debugging on GNU/Linux
- targets even when the libthread_db library is not available.
- * The GDB remote stub, gdbserver, now supports the new file transfer
- commands (remote put, remote get, and remote delete).
- * The GDB remote stub, gdbserver, now supports run and attach in
- extended-remote mode.
- * hppa*64*-*-hpux11* target broken
- The debugger is unable to start a program and fails with the following
- error: "Error trying to get information about dynamic linker".
- The gdb-6.7 release is also affected.
- * GDB now supports the --enable-targets= configure option to allow
- building a single GDB executable that supports multiple remote
- target architectures.
- * GDB now supports debugging C and C++ programs which use the
- Decimal Floating Point extension. In addition, the PowerPC target
- now has a set of pseudo-registers to inspect decimal float values
- stored in two consecutive float registers.
- * The -break-insert MI command can optionally create pending
- breakpoints now.
- * Improved support for debugging Ada
- Many improvements to the Ada language support have been made. These
- include:
- - Better support for Ada2005 interface types
- - Improved handling of arrays and slices in general
- - Better support for Taft-amendment types
- - The '{type} ADDRESS' expression is now allowed on the left hand-side
- of an assignment
- - Improved command completion in Ada
- - Several bug fixes
- * GDB on GNU/Linux and HP/UX can now debug through "exec" of a new
- process.
- * New commands
- set print frame-arguments (all|scalars|none)
- show print frame-arguments
- The value of this variable can be changed to control which argument
- values should be printed by the debugger when displaying a frame.
- remote put
- remote get
- remote delete
- Transfer files to and from a remote target, and delete remote files.
- * New MI commands
- -target-file-put
- -target-file-get
- -target-file-delete
- Transfer files to and from a remote target, and delete remote files.
- * New remote packets
- vFile:open:
- vFile:close:
- vFile:pread:
- vFile:pwrite:
- vFile:unlink:
- Open, close, read, write, and delete files on the remote system.
- vAttach
- Attach to an existing process on the remote system, in extended-remote
- mode.
- vRun
- Run a new process on the remote system, in extended-remote mode.
- *** Changes in GDB 6.7
- * Resolved 101 resource leaks, null pointer dereferences, etc. in gdb,
- bfd, libiberty and opcodes, as revealed by static analysis donated by
- Coverity, Inc. (http://scan.coverity.com).
- * When looking up multiply-defined global symbols, GDB will now prefer the
- symbol definition in the current shared library if it was built using the
- -Bsymbolic linker option.
- * When the Text User Interface (TUI) is not configured, GDB will now
- recognize the -tui command-line option and print a message that the TUI
- is not supported.
- * The GDB remote stub, gdbserver, now has lower overhead for high
- frequency signals (e.g. SIGALRM) via the QPassSignals packet.
- * GDB for MIPS targets now autodetects whether a remote target provides
- 32-bit or 64-bit register values.
- * Support for C++ member pointers has been improved.
- * GDB now understands XML target descriptions, which specify the
- target's overall architecture. GDB can read a description from
- a local file or over the remote serial protocol.
- * Vectors of single-byte data use a new integer type which is not
- automatically displayed as character or string data.
- * The /s format now works with the print command. It displays
- arrays of single-byte integers and pointers to single-byte integers
- as strings.
- * Target descriptions can now describe target-specific registers,
- for architectures which have implemented the support (currently
- only ARM, M68K, and MIPS).
- * GDB and the GDB remote stub, gdbserver, now support the XScale
- iWMMXt coprocessor.
- * The GDB remote stub, gdbserver, has been updated to support
- ARM Windows CE (mingw32ce) debugging, and GDB Windows CE support
- has been rewritten to use the standard GDB remote protocol.
- * GDB can now step into C++ functions which are called through thunks.
- * GDB for the Cell/B.E. SPU now supports overlay debugging.
- * The GDB remote protocol "qOffsets" packet can now honor ELF segment
- layout. It also supports a TextSeg= and DataSeg= response when only
- segment base addresses (rather than offsets) are available.
- * The /i format now outputs any trailing branch delay slot instructions
- immediately following the last instruction within the count specified.
- * The GDB remote protocol "T" stop reply packet now supports a
- "library" response. Combined with the new "qXfer:libraries:read"
- packet, this response allows GDB to debug shared libraries on targets
- where the operating system manages the list of loaded libraries (e.g.
- Windows and SymbianOS).
- * The GDB remote stub, gdbserver, now supports dynamic link libraries
- (DLLs) on Windows and Windows CE targets.
- * GDB now supports a faster verification that a .debug file matches its binary
- according to its build-id signature, if the signature is present.
- * New commands
- set remoteflow
- show remoteflow
- Enable or disable hardware flow control (RTS/CTS) on the serial port
- when debugging using remote targets.
- set mem inaccessible-by-default
- show mem inaccessible-by-default
- If the target supplies a memory map, for instance via the remote
- protocol's "qXfer:memory-map:read" packet, setting this variable
- prevents GDB from accessing memory outside the memory map. This
- is useful for targets with memory mapped registers or which react
- badly to accesses of unmapped address space.
- set breakpoint auto-hw
- show breakpoint auto-hw
- If the target supplies a memory map, for instance via the remote
- protocol's "qXfer:memory-map:read" packet, setting this variable
- lets GDB use hardware breakpoints automatically for memory regions
- where it can not use software breakpoints. This covers both the
- "break" command and internal breakpoints used for other commands
- including "next" and "finish".
- catch exception
- catch exception unhandled
- Stop the program execution when Ada exceptions are raised.
- catch assert
- Stop the program execution when an Ada assertion failed.
- set sysroot
- show sysroot
- Set an alternate system root for target files. This is a more
- general version of "set solib-absolute-prefix", which is now
- an alias to "set sysroot".
- info spu
- Provide extended SPU facility status information. This set of
- commands is available only when debugging the Cell/B.E. SPU
- architecture.
- * New native configurations
- OpenBSD/sh sh*-*openbsd*
- set tdesc filename
- unset tdesc filename
- show tdesc filename
- Use the specified local file as an XML target description, and do
- not query the target for its built-in description.
- * New targets
- OpenBSD/sh sh*-*-openbsd*
- MIPS64 GNU/Linux (gdbserver) mips64-linux-gnu
- Toshiba Media Processor mep-elf
- * New remote packets
- QPassSignals:
- Ignore the specified signals; pass them directly to the debugged program
- without stopping other threads or reporting them to GDB.
- qXfer:features:read:
- Read an XML target description from the target, which describes its
- features.
- qXfer:spu:read:
- qXfer:spu:write:
- Read or write contents of an spufs file on the target system. These
- packets are available only on the Cell/B.E. SPU architecture.
- qXfer:libraries:read:
- Report the loaded shared libraries. Combined with new "T" packet
- response, this packet allows GDB to debug shared libraries on
- targets where the operating system manages the list of loaded
- libraries (e.g. Windows and SymbianOS).
- * Removed targets
- Support for these obsolete configurations has been removed.
- alpha*-*-osf1*
- alpha*-*-osf2*
- d10v-*-*
- hppa*-*-hiux*
- i[34567]86-ncr-*
- i[34567]86-*-dgux*
- i[34567]86-*-lynxos*
- i[34567]86-*-netware*
- i[34567]86-*-sco3.2v5*
- i[34567]86-*-sco3.2v4*
- i[34567]86-*-sco*
- i[34567]86-*-sysv4.2*
- i[34567]86-*-sysv4*
- i[34567]86-*-sysv5*
- i[34567]86-*-unixware2*
- i[34567]86-*-unixware*
- i[34567]86-*-sysv*
- i[34567]86-*-isc*
- m68*-cisco*-*
- m68*-tandem-*
- mips*-*-pe
- rs6000-*-lynxos*
- sh*-*-pe
- * Other removed features
- target abug
- target cpu32bug
- target est
- target rom68k
- Various m68k-only ROM monitors.
- target hms
- target e7000
- target sh3
- target sh3e
- Various Renesas ROM monitors and debugging interfaces for SH and
- H8/300.
- target ocd
- Support for a Macraigor serial interface to on-chip debugging.
- GDB does not directly support the newer parallel or USB
- interfaces.
- DWARF 1 support
- A debug information format. The predecessor to DWARF 2 and
- DWARF 3, which are still supported.
- Support for the HP aCC compiler on HP-UX/PA-RISC
- SOM-encapsulated symbolic debugging information, automatic
- invocation of pxdb, and the aCC custom C++ ABI. This does not
- affect HP-UX for Itanium or GCC for HP-UX/PA-RISC. Code compiled
- with aCC can still be debugged on an assembly level.
- MIPS ".pdr" sections
- A MIPS-specific format used to describe stack frame layout
- in debugging information.
- Scheme support
- GDB could work with an older version of Guile to debug
- the interpreter and Scheme programs running in it.
- set mips stack-arg-size
- set mips saved-gpreg-size
- Use "set mips abi" to control parameter passing for MIPS.
- *** Changes in GDB 6.6
- * New targets
- Xtensa xtensa-elf
- Cell Broadband Engine SPU spu-elf
- * GDB can now be configured as a cross-debugger targeting native Windows
- (mingw32) or Cygwin. It can communicate with a remote debugging stub
- running on a Windows system over TCP/IP to debug Windows programs.
- * The GDB remote stub, gdbserver, has been updated to support Windows and
- Cygwin debugging. Both single-threaded and multi-threaded programs are
- supported.
- * The "set trust-readonly-sections" command works again. This command was
- broken in GDB 6.3, 6.4, and 6.5.
- * The "load" command now supports writing to flash memory, if the remote
- stub provides the required support.
- * Support for GNU/Linux Thread Local Storage (TLS, per-thread variables) no
- longer requires symbolic debug information (e.g. DWARF-2).
- * New commands
- set substitute-path
- unset substitute-path
- show substitute-path
- Manage a list of substitution rules that GDB uses to rewrite the name
- of the directories where the sources are located. This can be useful
- for instance when the sources were moved to a different location
- between compilation and debugging.
- set trace-commands
- show trace-commands
- Print each CLI command as it is executed. Each command is prefixed with
- a number of `+' symbols representing the nesting depth.
- The source command now has a `-v' option to enable the same feature.
- * REMOVED features
- The ARM Demon monitor support (RDP protocol, "target rdp").
- Kernel Object Display, an embedded debugging feature which only worked with
- an obsolete version of Cisco IOS.
- The 'set download-write-size' and 'show download-write-size' commands.
- * New remote packets
- qSupported:
- Tell a stub about GDB client features, and request remote target features.
- The first feature implemented is PacketSize, which allows the target to
- specify the size of packets it can handle - to minimize the number of
- packets required and improve performance when connected to a remote
- target.
- qXfer:auxv:read:
- Fetch an OS auxilliary vector from the remote stub. This packet is a
- more efficient replacement for qPart:auxv:read.
- qXfer:memory-map:read:
- Fetch a memory map from the remote stub, including information about
- RAM, ROM, and flash memory devices.
- vFlashErase:
- vFlashWrite:
- vFlashDone:
- Erase and program a flash memory device.
- * Removed remote packets
- qPart:auxv:read:
- This packet has been replaced by qXfer:auxv:read. Only GDB 6.4 and 6.5
- used it, and only gdbserver implemented it.
- *** Changes in GDB 6.5
- * New targets
- Renesas M32C/M16C m32c-elf
- Morpho Technologies ms1 ms1-elf
- * New commands
- init-if-undefined Initialize a convenience variable, but
- only if it doesn't already have a value.
- The following commands are presently only implemented for native GNU/Linux:
- checkpoint Save a snapshot of the program state.
- restart <n> Return the program state to a
- previously saved state.
- info checkpoints List currently saved checkpoints.
- delete-checkpoint <n> Delete a previously saved checkpoint.
- set|show detach-on-fork Tell gdb whether to detach from a newly
- forked process, or to keep debugging it.
- info forks List forks of the user program that
- are available to be debugged.
- fork <n> Switch to debugging one of several
- forks of the user program that are
- available to be debugged.
- delete-fork <n> Delete a fork from the list of forks
- that are available to be debugged (and
- kill the forked process).
- detach-fork <n> Delete a fork from the list of forks
- that are available to be debugged (and
- allow the process to continue).
- * New architecture
- Morpho Technologies ms2 ms1-elf
- * Improved Windows host support
- GDB now builds as a cross debugger hosted on i686-mingw32, including
- native console support, and remote communications using either
- network sockets or serial ports.
- * Improved Modula-2 language support
- GDB can now print most types in the Modula-2 syntax. This includes:
- basic types, set types, record types, enumerated types, range types,
- pointer types and ARRAY types. Procedure var parameters are correctly
- printed and hexadecimal addresses and character constants are also
- written in the Modula-2 syntax. Best results can be obtained by using
- GNU Modula-2 together with the -gdwarf-2 command line option.
- * REMOVED features
- The ARM rdi-share module.
- The Netware NLM debug server.
- *** Changes in GDB 6.4
- * New native configurations
- OpenBSD/arm arm*-*-openbsd*
- OpenBSD/mips64 mips64-*-openbsd*
- * New targets
- Morpho Technologies ms1 ms1-elf
- * New command line options
- --batch-silent As for --batch, but totally silent.
- --return-child-result The debugger will exist with the same value
- the child (debugged) program exited with.
- --eval-command COMMAND, -ex COMMAND
- Execute a single GDB CLI command. This may be
- specified multiple times and in conjunction
- with the --command (-x) option.
- * Deprecated commands removed
- The following commands, that were deprecated in 2000, have been
- removed:
- Command Replacement
- set|show arm disassembly-flavor set|show arm disassembler
- othernames set arm disassembler
- set|show remotedebug set|show debug remote
- set|show archdebug set|show debug arch
- set|show eventdebug set|show debug event
- regs info registers
- * New BSD user-level threads support
- It is now possible to debug programs using the user-level threads
- library on OpenBSD and FreeBSD. Currently supported (target)
- configurations are:
- FreeBSD/amd64 x86_64-*-freebsd*
- FreeBSD/i386 i386-*-freebsd*
- OpenBSD/i386 i386-*-openbsd*
- Note that the new kernel threads libraries introduced in FreeBSD 5.x
- are not yet supported.
- * New support for Matsushita MN10300 w/sim added
- (Work in progress). mn10300-elf.
- * REMOVED configurations and files
- VxWorks and the XDR protocol *-*-vxworks
- Motorola MCORE mcore-*-*
- National Semiconductor NS32000 ns32k-*-*
- * New "set print array-indexes" command
- After turning this setting "on", GDB prints the index of each element
- when displaying arrays. The default is "off" to preserve the previous
- behavior.
- * VAX floating point support
- GDB now supports the not-quite-ieee VAX F and D floating point formats.
- * User-defined command support
- In addition to using $arg0..$arg9 for argument passing, it is now possible
- to use $argc to determine now many arguments have been passed. See the
- section on user-defined commands in the user manual for more information.
- *** Changes in GDB 6.3:
- * New command line option
- GDB now accepts -l followed by a number to set the timeout for remote
- debugging.
- * GDB works with GCC -feliminate-dwarf2-dups
- GDB now supports a more compact representation of DWARF-2 debug
- information using DW_FORM_ref_addr references. These are produced
- by GCC with the option -feliminate-dwarf2-dups and also by some
- proprietary compilers. With GCC, you must use GCC 3.3.4 or later
- to use -feliminate-dwarf2-dups.
- * Internationalization
- When supported by the host system, GDB will be built with
- internationalization (libintl). The task of marking up the sources is
- continued, we're looking forward to our first translation.
- * Ada
- Initial support for debugging programs compiled with the GNAT
- implementation of the Ada programming language has been integrated
- into GDB. In this release, support is limited to expression evaluation.
- * New native configurations
- GNU/Linux/m32r m32r-*-linux-gnu
- * Remote 'p' packet
- GDB's remote protocol now includes support for the 'p' packet. This
- packet is used to fetch individual registers from a remote inferior.
- * END-OF-LIFE registers[] compatibility module
- GDB's internal register infrastructure has been completely rewritten.
- The new infrastructure making possible the implementation of key new
- features including 32x64 (e.g., 64-bit amd64 GDB debugging a 32-bit
- i386 application).
- GDB 6.3 will be the last release to include the registers[]
- compatibility module that allowed out-of-date configurations to
- continue to work. This change directly impacts the following
- configurations:
- hppa-*-hpux
- ia64-*-aix
- mips-*-irix*
- *-*-lynx
- mips-*-linux-gnu
- sds protocol
- xdr protocol
- powerpc bdm protocol
- Unless there is activity to revive these configurations, they will be
- made OBSOLETE in GDB 6.4, and REMOVED from GDB 6.5.
- * OBSOLETE configurations and files
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- h8300-*-*
- mcore-*-*
- mn10300-*-*
- ns32k-*-*
- sh64-*-*
- v850-*-*
- *** Changes in GDB 6.2.1:
- * MIPS `break main; run' gave an heuristic-fence-post warning
- When attempting to run even a simple program, a warning about
- heuristic-fence-post being hit would be reported. This problem has
- been fixed.
- * MIPS IRIX 'long double' crashed GDB
- When examining a long double variable, GDB would get a segmentation
- fault. The crash has been fixed (but GDB 6.2 cannot correctly examine
- IRIX long double values).
- * VAX and "next"
- A bug in the VAX stack code was causing problems with the "next"
- command. This problem has been fixed.
- *** Changes in GDB 6.2:
- * Fix for ``many threads''
- On GNU/Linux systems that use the NPTL threads library, a program
- rapidly creating and deleting threads would confuse GDB leading to the
- error message:
- ptrace: No such process.
- thread_db_get_info: cannot get thread info: generic error
- This problem has been fixed.
- * "-async" and "-noasync" options removed.
- Support for the broken "-noasync" option has been removed (it caused
- GDB to dump core).
- * New ``start'' command.
- This command runs the program until the beginning of the main procedure.
- * New BSD Kernel Data Access Library (libkvm) interface
- Using ``target kvm'' it is now possible to debug kernel core dumps and
- live kernel memory images on various FreeBSD, NetBSD and OpenBSD
- platforms. Currently supported (native-only) configurations are:
- FreeBSD/amd64 x86_64-*-freebsd*
- FreeBSD/i386 i?86-*-freebsd*
- NetBSD/i386 i?86-*-netbsd*
- NetBSD/m68k m68*-*-netbsd*
- NetBSD/sparc sparc-*-netbsd*
- OpenBSD/amd64 x86_64-*-openbsd*
- OpenBSD/i386 i?86-*-openbsd*
- OpenBSD/m68k m68*-openbsd*
- OpenBSD/sparc sparc-*-openbsd*
- * Signal trampoline code overhauled
- Many generic problems with GDB's signal handling code have been fixed.
- These include: backtraces through non-contiguous stacks; recognition
- of sa_sigaction signal trampolines; backtrace from a NULL pointer
- call; backtrace through a signal trampoline; step into and out of
- signal handlers; and single-stepping in the signal trampoline.
- Please note that kernel bugs are a limiting factor here. These
- features have been shown to work on an s390 GNU/Linux system that
- include a 2.6.8-rc1 kernel. Ref PR breakpoints/1702.
- * Cygwin support for DWARF 2 added.
- * New native configurations
- GNU/Linux/hppa hppa*-*-linux*
- OpenBSD/hppa hppa*-*-openbsd*
- OpenBSD/m68k m68*-*-openbsd*
- OpenBSD/m88k m88*-*-openbsd*
- OpenBSD/powerpc powerpc-*-openbsd*
- NetBSD/vax vax-*-netbsd*
- OpenBSD/vax vax-*-openbsd*
- * END-OF-LIFE frame compatibility module
- GDB's internal frame infrastructure has been completely rewritten.
- The new infrastructure making it possible to support key new features
- including DWARF 2 Call Frame Information. To aid in the task of
- migrating old configurations to this new infrastructure, a
- compatibility module, that allowed old configurations to continue to
- work, was also included.
- GDB 6.2 will be the last release to include this frame compatibility
- module. This change directly impacts the following configurations:
- h8300-*-*
- mcore-*-*
- mn10300-*-*
- ns32k-*-*
- sh64-*-*
- v850-*-*
- xstormy16-*-*
- Unless there is activity to revive these configurations, they will be
- made OBSOLETE in GDB 6.3, and REMOVED from GDB 6.4.
- * REMOVED configurations and files
- Sun 3, running SunOS 3 m68*-*-sunos3*
- Sun 3, running SunOS 4 m68*-*-sunos4*
- Sun 2, running SunOS 3 m68000-*-sunos3*
- Sun 2, running SunOS 4 m68000-*-sunos4*
- Motorola 680x0 running LynxOS m68*-*-lynxos*
- AT&T 3b1/Unix pc m68*-att-*
- Bull DPX2 (68k, System V release 3) m68*-bull-sysv*
- decstation mips-dec-* mips-little-*
- riscos mips-*-riscos* mips-*-sysv*
- sonymips mips-sony-*
- sysv mips*-*-sysv4* (IRIX 5/6 not included)
- *** Changes in GDB 6.1.1:
- * TUI (Text-mode User Interface) built-in (also included in GDB 6.1)
- The TUI (Text-mode User Interface) is now built as part of a default
- GDB configuration. It is enabled by either selecting the TUI with the
- command line option "-i=tui" or by running the separate "gdbtui"
- program. For more information on the TUI, see the manual "Debugging
- with GDB".
- * Pending breakpoint support (also included in GDB 6.1)
- Support has been added to allow you to specify breakpoints in shared
- libraries that have not yet been loaded. If a breakpoint location
- cannot be found, and the "breakpoint pending" option is set to auto,
- GDB queries you if you wish to make the breakpoint pending on a future
- shared-library load. If and when GDB resolves the breakpoint symbol,
- the pending breakpoint is removed as one or more regular breakpoints
- are created.
- Pending breakpoints are very useful for GCJ Java debugging.
- * Fixed ISO-C build problems
- The files bfd/elf-bfd.h, gdb/dictionary.c and gdb/types.c contained
- non ISO-C code that stopped them being built using a more strict ISO-C
- compiler (e.g., IBM's C compiler).
- * Fixed build problem on IRIX 5
- Due to header problems with <sys/proc.h>, the file gdb/proc-api.c
- wasn't able to compile compile on an IRIX 5 system.
- * Added execute permission to gdb/gdbserver/configure
- The shell script gdb/testsuite/gdb.stabs/configure lacked execute
- permission. This bug would cause configure to fail on a number of
- systems (Solaris, IRIX). Ref: server/519.
- * Fixed build problem on hpux2.0w-hp-hpux11.00 using the HP ANSI C compiler
- Older HPUX ANSI C compilers did not accept variable array sizes. somsolib.c
- has been updated to use constant array sizes.
- * Fixed a panic in the DWARF Call Frame Info code on Solaris 2.7
- GCC 3.3.2, on Solaris 2.7, includes the DW_EH_PE_funcrel encoding in
- its generated DWARF Call Frame Info. This encoding was causing GDB to
- panic, that panic has been fixed. Ref: gdb/1628.
- * Fixed a problem when examining parameters in shared library code.
- When examining parameters in optimized shared library code generated
- by a mainline GCC, GDB would incorrectly report ``Variable "..." is
- not available''. GDB now correctly displays the variable's value.
- *** Changes in GDB 6.1:
- * Removed --with-mmalloc
- Support for the mmalloc memory manager has been removed, as it
- conflicted with the internal gdb byte cache.
- * Changes in AMD64 configurations
- The AMD64 target now includes the %cs and %ss registers. As a result
- the AMD64 remote protocol has changed; this affects the floating-point
- and SSE registers. If you rely on those registers for your debugging,
- you should upgrade gdbserver on the remote side.
- * Revised SPARC target
- The SPARC target has been completely revised, incorporating the
- FreeBSD/sparc64 support that was added for GDB 6.0. As a result
- support for LynxOS and SunOS 4 has been dropped. Calling functions
- from within GDB on operating systems with a non-executable stack
- (Solaris, OpenBSD) now works.
- * New C++ demangler
- GDB has a new C++ demangler which does a better job on the mangled
- names generated by current versions of g++. It also runs faster, so
- with this and other changes gdb should now start faster on large C++
- programs.
- * DWARF 2 Location Expressions
- GDB support for location expressions has been extended to support function
- arguments and frame bases. Older versions of GDB could crash when they
- encountered these.
- * C++ nested types and namespaces
- GDB's support for nested types and namespaces in C++ has been
- improved, especially if you use the DWARF 2 debugging format. (This
- is the default for recent versions of GCC on most platforms.)
- Specifically, if you have a class "Inner" defined within a class or
- namespace "Outer", then GDB realizes that the class's name is
- "Outer::Inner", not simply "Inner". This should greatly reduce the
- frequency of complaints about not finding RTTI symbols. In addition,
- if you are stopped at inside of a function defined within a namespace,
- GDB modifies its name lookup accordingly.
- * New native configurations
- NetBSD/amd64 x86_64-*-netbsd*
- OpenBSD/amd64 x86_64-*-openbsd*
- OpenBSD/alpha alpha*-*-openbsd*
- OpenBSD/sparc sparc-*-openbsd*
- OpenBSD/sparc64 sparc64-*-openbsd*
- * New debugging protocols
- M32R with SDI protocol m32r-*-elf*
- * "set prompt-escape-char" command deleted.
- The command "set prompt-escape-char" has been deleted. This command,
- and its very obscure effect on GDB's prompt, was never documented,
- tested, nor mentioned in the NEWS file.
- * OBSOLETE configurations and files
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- Sun 3, running SunOS 3 m68*-*-sunos3*
- Sun 3, running SunOS 4 m68*-*-sunos4*
- Sun 2, running SunOS 3 m68000-*-sunos3*
- Sun 2, running SunOS 4 m68000-*-sunos4*
- Motorola 680x0 running LynxOS m68*-*-lynxos*
- AT&T 3b1/Unix pc m68*-att-*
- Bull DPX2 (68k, System V release 3) m68*-bull-sysv*
- decstation mips-dec-* mips-little-*
- riscos mips-*-riscos* mips-*-sysv*
- sonymips mips-sony-*
- sysv mips*-*-sysv4* (IRIX 5/6 not included)
- * REMOVED configurations and files
- SGI Irix-4.x mips-sgi-irix4 or iris4
- SGI Iris (MIPS) running Irix V3: mips-sgi-irix or iris
- Z8000 simulator z8k-zilog-none or z8ksim
- Matsushita MN10200 w/simulator mn10200-*-*
- H8/500 simulator h8500-hitachi-hms or h8500hms
- HP/PA running BSD hppa*-*-bsd*
- HP/PA running OSF/1 hppa*-*-osf*
- HP/PA Pro target hppa*-*-pro*
- PMAX (MIPS) running Mach 3.0 mips*-*-mach3*
- 386BSD i[3456]86-*-bsd*
- Sequent family i[3456]86-sequent-sysv4*
- i[3456]86-sequent-sysv*
- i[3456]86-sequent-bsd*
- SPARC running LynxOS sparc-*-lynxos*
- SPARC running SunOS 4 sparc-*-sunos4*
- Tsqware Sparclet sparclet-*-*
- Fujitsu SPARClite sparclite-fujitsu-none or sparclite
- *** Changes in GDB 6.0:
- * Objective-C
- Support for debugging the Objective-C programming language has been
- integrated into GDB.
- * New backtrace mechanism (includes DWARF 2 Call Frame Information).
- DWARF 2's Call Frame Information makes available compiler generated
- information that more exactly describes the program's run-time stack.
- By using this information, GDB is able to provide more robust stack
- backtraces.
- The i386, amd64 (nee, x86-64), Alpha, m68hc11, ia64, and m32r targets
- have been updated to use a new backtrace mechanism which includes
- DWARF 2 CFI support.
- * Hosted file I/O.
- GDB's remote protocol has been extended to include support for hosted
- file I/O (where the remote target uses GDB's file system). See GDB's
- remote protocol documentation for details.
- * All targets using the new architecture framework.
- All of GDB's targets have been updated to use the new internal
- architecture framework. The way is now open for future GDB releases
- to include cross-architecture native debugging support (i386 on amd64,
- ppc32 on ppc64).
- * GNU/Linux's Thread Local Storage (TLS)
- GDB now includes support for for the GNU/Linux implementation of
- per-thread variables.
- * GNU/Linux's Native POSIX Thread Library (NPTL)
- GDB's thread code has been updated to work with either the new
- GNU/Linux NPTL thread library or the older "LinuxThreads" library.
- * Separate debug info.
- GDB, in conjunction with BINUTILS, now supports a mechanism for
- automatically loading debug information from a separate file. Instead
- of shipping full debug and non-debug versions of system libraries,
- system integrators can now instead ship just the stripped libraries
- and optional debug files.
- * DWARF 2 Location Expressions
- DWARF 2 Location Expressions allow the compiler to more completely
- describe the location of variables (even in optimized code) to the
- debugger.
- GDB now includes preliminary support for location expressions (support
- for DW_OP_piece is still missing).
- * Java
- A number of long standing bugs that caused GDB to die while starting a
- Java application have been fixed. GDB's Java support is now
- considered "useable".
- * GNU/Linux support for fork, vfork, and exec.
- The "catch fork", "catch exec", "catch vfork", and "set follow-fork-mode"
- commands are now implemented for GNU/Linux. They require a 2.5.x or later
- kernel.
- * GDB supports logging output to a file
- There are two new commands, "set logging" and "show logging", which can be
- used to capture GDB's output to a file.
- * The meaning of "detach" has changed for gdbserver
- The "detach" command will now resume the application, as documented. To
- disconnect from gdbserver and leave it stopped, use the new "disconnect"
- command.
- * d10v, m68hc11 `regs' command deprecated
- The `info registers' command has been updated so that it displays the
- registers using a format identical to the old `regs' command.
- * Profiling support
- A new command, "maint set profile on/off", has been added. This command can
- be used to enable or disable profiling while running GDB, to profile a
- session or a set of commands. In addition there is a new configure switch,
- "--enable-profiling", which will cause GDB to be compiled with profiling
- data, for more informative profiling results.
- * Default MI syntax changed to "mi2".
- The default MI (machine interface) syntax, enabled by the command line
- option "-i=mi", has been changed to "mi2". The previous MI syntax,
- "mi1", can be enabled by specifying the option "-i=mi1".
- Support for the original "mi0" syntax (included in GDB 5.0) has been
- removed.
- Fix for gdb/192: removed extraneous space when displaying frame level.
- Fix for gdb/672: update changelist is now output in mi list format.
- Fix for gdb/702: a -var-assign that updates the value now shows up
- in a subsequent -var-update.
- * New native configurations.
- FreeBSD/amd64 x86_64-*-freebsd*
- * Multi-arched targets.
- HP/PA HPUX11 hppa*-*-hpux*
- Renesas M32R/D w/simulator m32r-*-elf*
- * OBSOLETE configurations and files
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- Z8000 simulator z8k-zilog-none or z8ksim
- Matsushita MN10200 w/simulator mn10200-*-*
- H8/500 simulator h8500-hitachi-hms or h8500hms
- HP/PA running BSD hppa*-*-bsd*
- HP/PA running OSF/1 hppa*-*-osf*
- HP/PA Pro target hppa*-*-pro*
- PMAX (MIPS) running Mach 3.0 mips*-*-mach3*
- Sequent family i[3456]86-sequent-sysv4*
- i[3456]86-sequent-sysv*
- i[3456]86-sequent-bsd*
- Tsqware Sparclet sparclet-*-*
- Fujitsu SPARClite sparclite-fujitsu-none or sparclite
- * REMOVED configurations and files
- V850EA ISA
- Motorola Delta 88000 running Sys V m88k-motorola-sysv or delta88
- IBM AIX PS/2 i[3456]86-*-aix
- i386 running Mach 3.0 i[3456]86-*-mach3*
- i386 running Mach i[3456]86-*-mach*
- i386 running OSF/1 i[3456]86-*osf1mk*
- HP/Apollo 68k Family m68*-apollo*-sysv*,
- m68*-apollo*-bsd*,
- m68*-hp-bsd*, m68*-hp-hpux*
- Argonaut Risc Chip (ARC) arc-*-*
- Mitsubishi D30V d30v-*-*
- Fujitsu FR30 fr30-*-elf*
- OS/9000 i[34]86-*-os9k
- I960 with MON960 i960-*-coff
- * MIPS $fp behavior changed
- The convenience variable $fp, for the MIPS, now consistently returns
- the address of the current frame's base. Previously, depending on the
- context, $fp could refer to either $sp or the current frame's base
- address. See ``8.10 Registers'' in the manual ``Debugging with GDB:
- The GNU Source-Level Debugger''.
- *** Changes in GDB 5.3:
- * GNU/Linux shared library multi-threaded performance improved.
- When debugging a multi-threaded application on GNU/Linux, GDB now uses
- `/proc', in preference to `ptrace' for memory reads. This may result
- in an improvement in the start-up time of multi-threaded, shared
- library applications when run under GDB. One GDB user writes: ``loads
- shared libs like mad''.
- * ``gdbserver'' now supports multi-threaded applications on some targets
- Support for debugging multi-threaded applications which use
- the GNU/Linux LinuxThreads package has been added for
- arm*-*-linux*-gnu*, i[3456]86-*-linux*-gnu*, mips*-*-linux*-gnu*,
- powerpc*-*-linux*-gnu*, and sh*-*-linux*-gnu*.
- * GDB now supports C/C++ preprocessor macros.
- GDB now expands preprocessor macro invocations in C/C++ expressions,
- and provides various commands for showing macro definitions and how
- they expand.
- The new command `macro expand EXPRESSION' expands any macro
- invocations in expression, and shows the result.
- The new command `show macro MACRO-NAME' shows the definition of the
- macro named MACRO-NAME, and where it was defined.
- Most compilers don't include information about macros in the debugging
- information by default. In GCC 3.1, for example, you need to compile
- your program with the options `-gdwarf-2 -g3'. If the macro
- information is present in the executable, GDB will read it.
- * Multi-arched targets.
- DEC Alpha (partial) alpha*-*-*
- DEC VAX (partial) vax-*-*
- NEC V850 v850-*-*
- National Semiconductor NS32000 (partial) ns32k-*-*
- Motorola 68000 (partial) m68k-*-*
- Motorola MCORE mcore-*-*
- * New targets.
- Fujitsu FRV architecture added by Red Hat frv*-*-*
- * New native configurations
- Alpha NetBSD alpha*-*-netbsd*
- SH NetBSD sh*-*-netbsdelf*
- MIPS NetBSD mips*-*-netbsd*
- UltraSPARC NetBSD sparc64-*-netbsd*
- * OBSOLETE configurations and files
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- Mitsubishi D30V d30v-*-*
- OS/9000 i[34]86-*-os9k
- IBM AIX PS/2 i[3456]86-*-aix
- Fujitsu FR30 fr30-*-elf*
- Motorola Delta 88000 running Sys V m88k-motorola-sysv or delta88
- Argonaut Risc Chip (ARC) arc-*-*
- i386 running Mach 3.0 i[3456]86-*-mach3*
- i386 running Mach i[3456]86-*-mach*
- i386 running OSF/1 i[3456]86-*osf1mk*
- HP/Apollo 68k Family m68*-apollo*-sysv*,
- m68*-apollo*-bsd*,
- m68*-hp-bsd*, m68*-hp-hpux*
- I960 with MON960 i960-*-coff
- * OBSOLETE languages
- CHILL, a Pascal like language used by telecommunications companies.
- * REMOVED configurations and files
- AMD 29k family via UDI a29k-amd-udi, udi29k
- A29K VxWorks a29k-*-vxworks
- AMD 29000 embedded, using EBMON a29k-none-none
- AMD 29000 embedded with COFF a29k-none-coff
- AMD 29000 embedded with a.out a29k-none-aout
- testsuite/gdb.hp/gdb.threads-hp/ directory
- * New command "set max-user-call-depth <nnn>"
- This command allows the user to limit the call depth of user-defined
- commands. The default is 1024.
- * Changes in FreeBSD/i386 native debugging.
- Support for the "generate-core-file" has been added.
- * New commands "dump", "append", and "restore".
- These commands allow data to be copied from target memory
- to a bfd-format or binary file (dump and append), and back
- from a file into memory (restore).
- * Improved "next/step" support on multi-processor Alpha Tru64.
- The previous single-step mechanism could cause unpredictable problems,
- including the random appearance of SIGSEGV or SIGTRAP signals. The use
- of a software single-step mechanism prevents this.
- *** Changes in GDB 5.2.1:
- * New targets.
- Atmel AVR avr*-*-*
- * Bug fixes
- gdb/182: gdb/323: gdb/237: On alpha, gdb was reporting:
- mdebugread.c:2443: gdb-internal-error: sect_index_data not initialized
- Fix, by Joel Brobecker imported from mainline.
- gdb/439: gdb/291: On some ELF object files, gdb was reporting:
- dwarf2read.c:1072: gdb-internal-error: sect_index_text not initialize
- Fix, by Fred Fish, imported from mainline.
- Dwarf2 .debug_frame & .eh_frame handler improved in many ways.
- Surprisingly enough, it works now.
- By Michal Ludvig, imported from mainline.
- i386 hardware watchpoint support:
- avoid misses on second run for some targets.
- By Pierre Muller, imported from mainline.
- *** Changes in GDB 5.2:
- * New command "set trust-readonly-sections on[off]".
- This command is a hint that tells gdb that read-only sections
- really are read-only (ie. that their contents will not change).
- In this mode, gdb will go to the object file rather than the
- target to read memory from read-only sections (such as ".text").
- This can be a significant performance improvement on some
- (notably embedded) targets.
- * New command "generate-core-file" (or "gcore").
- This new gdb command allows the user to drop a core file of the child
- process state at any time. So far it's been implemented only for
- GNU/Linux and Solaris, but should be relatively easily ported to other
- hosts. Argument is core file name (defaults to core.<pid>).
- * New command line option
- GDB now accepts --pid or -p followed by a process id.
- * Change in command line behavior -- corefiles vs. process ids.
- There is a subtle behavior in the way in which GDB handles
- command line arguments. The first non-flag argument is always
- a program to debug, but the second non-flag argument may either
- be a corefile or a process id. Previously, GDB would attempt to
- open the second argument as a corefile, and if that failed, would
- issue a superfluous error message and then attempt to attach it as
- a process. Now, if the second argument begins with a non-digit,
- it will be treated as a corefile. If it begins with a digit,
- GDB will attempt to attach it as a process, and if no such process
- is found, will then attempt to open it as a corefile.
- * Changes in ARM configurations.
- Multi-arch support is enabled for all ARM configurations. The ARM/NetBSD
- configuration is fully multi-arch.
- * New native configurations
- ARM NetBSD arm*-*-netbsd*
- x86 OpenBSD i[3456]86-*-openbsd*
- AMD x86-64 running GNU/Linux x86_64-*-linux-*
- Sparc64 running FreeBSD sparc64-*-freebsd*
- * New targets
- Sanyo XStormy16 xstormy16-elf
- * OBSOLETE configurations and files
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- AMD 29k family via UDI a29k-amd-udi, udi29k
- A29K VxWorks a29k-*-vxworks
- AMD 29000 embedded, using EBMON a29k-none-none
- AMD 29000 embedded with COFF a29k-none-coff
- AMD 29000 embedded with a.out a29k-none-aout
- testsuite/gdb.hp/gdb.threads-hp/ directory
- * REMOVED configurations and files
- TI TMS320C80 tic80-*-*
- WDC 65816 w65-*-*
- PowerPC Solaris powerpcle-*-solaris*
- PowerPC Windows NT powerpcle-*-cygwin32
- PowerPC Netware powerpc-*-netware*
- Harris/CXUX m88k m88*-harris-cxux*
- Most ns32k hosts and targets ns32k-*-mach3* ns32k-umax-*
- ns32k-utek-sysv* ns32k-utek-*
- SunOS 4.0.Xi on i386 i[3456]86-*-sunos*
- Ultracomputer (29K) running Sym1 a29k-nyu-sym1 a29k-*-kern*
- Sony NEWS (68K) running NEWSOS 3.x m68*-sony-sysv news
- ISI Optimum V (3.05) under 4.3bsd. m68*-isi-*
- Apple Macintosh (MPW) host and target N/A host, powerpc-*-macos*
- * Changes to command line processing
- The new `--args' feature can be used to specify command-line arguments
- for the inferior from gdb's command line.
- * Changes to key bindings
- There is a new `operate-and-get-next' function bound to `C-o'.
- *** Changes in GDB 5.1.1
- Fix compile problem on DJGPP.
- Fix a problem with floating-point registers on the i386 being
- corrupted.
- Fix to stop GDB crashing on .debug_str debug info.
- Numerous documentation fixes.
- Numerous testsuite fixes.
- *** Changes in GDB 5.1:
- * New native configurations
- Alpha FreeBSD alpha*-*-freebsd*
- x86 FreeBSD 3.x and 4.x i[3456]86*-freebsd[34]*
- MIPS GNU/Linux mips*-*-linux*
- MIPS SGI Irix 6.x mips*-sgi-irix6*
- ia64 AIX ia64-*-aix*
- s390 and s390x GNU/Linux {s390,s390x}-*-linux*
- * New targets
- Motorola 68HC11 and 68HC12 m68hc11-elf
- CRIS cris-axis
- UltraSparc running GNU/Linux sparc64-*-linux*
- * OBSOLETE configurations and files
- x86 FreeBSD before 2.2 i[3456]86*-freebsd{1,2.[01]}*,
- Harris/CXUX m88k m88*-harris-cxux*
- Most ns32k hosts and targets ns32k-*-mach3* ns32k-umax-*
- ns32k-utek-sysv* ns32k-utek-*
- TI TMS320C80 tic80-*-*
- WDC 65816 w65-*-*
- Ultracomputer (29K) running Sym1 a29k-nyu-sym1 a29k-*-kern*
- PowerPC Solaris powerpcle-*-solaris*
- PowerPC Windows NT powerpcle-*-cygwin32
- PowerPC Netware powerpc-*-netware*
- SunOS 4.0.Xi on i386 i[3456]86-*-sunos*
- Sony NEWS (68K) running NEWSOS 3.x m68*-sony-sysv news
- ISI Optimum V (3.05) under 4.3bsd. m68*-isi-*
- Apple Macintosh (MPW) host N/A
- stuff.c (Program to stuff files into a specially prepared space in kdb)
- kdb-start.c (Main loop for the standalone kernel debugger)
- Configurations that have been declared obsolete in this release have
- been commented out. Unless there is activity to revive these
- configurations, the next release of GDB will have their sources
- permanently REMOVED.
- * REMOVED configurations and files
- Altos 3068 m68*-altos-*
- Convex c1-*-*, c2-*-*
- Pyramid pyramid-*-*
- ARM RISCix arm-*-* (as host)
- Tahoe tahoe-*-*
- ser-ocd.c *-*-*
- * GDB has been converted to ISO C.
- GDB's source code has been converted to ISO C. In particular, the
- sources are fully protoized, and rely on standard headers being
- present.
- * Other news:
- * "info symbol" works on platforms which use COFF, ECOFF, XCOFF, and NLM.
- * The MI enabled by default.
- The new machine oriented interface (MI) introduced in GDB 5.0 has been
- revised and enabled by default. Packages which use GDB as a debugging
- engine behind a UI or another front end are encouraged to switch to
- using the GDB/MI interface, instead of the old annotations interface
- which is now deprecated.
- * Support for debugging Pascal programs.
- GDB now includes support for debugging Pascal programs. The following
- main features are supported:
- - Pascal-specific data types such as sets;
- - automatic recognition of Pascal sources based on file-name
- extension;
- - Pascal-style display of data types, variables, and functions;
- - a Pascal expression parser.
- However, some important features are not yet supported.
- - Pascal string operations are not supported at all;
- - there are some problems with boolean types;
- - Pascal type hexadecimal constants are not supported
- because they conflict with the internal variables format;
- - support for Pascal objects and classes is not full yet;
- - unlike Pascal, GDB is case-sensitive for symbol names.
- * Changes in completion.
- Commands such as `shell', `run' and `set args', which pass arguments
- to inferior programs, now complete on file names, similar to what
- users expect at the shell prompt.
- Commands which accept locations, such as `disassemble', `print',
- `breakpoint', `until', etc. now complete on filenames as well as
- program symbols. Thus, if you type "break foob TAB", and the source
- files linked into the programs include `foobar.c', that file name will
- be one of the candidates for completion. However, file names are not
- considered for completion after you typed a colon that delimits a file
- name from a name of a function in that file, as in "break foo.c:bar".
- `set demangle-style' completes on available demangling styles.
- * New platform-independent commands:
- It is now possible to define a post-hook for a command as well as a
- hook that runs before the command. For more details, see the
- documentation of `hookpost' in the GDB manual.
- * Changes in GNU/Linux native debugging.
- Support for debugging multi-threaded programs has been completely
- revised for all platforms except m68k and sparc. You can now debug as
- many threads as your system allows you to have.
- Attach/detach is supported for multi-threaded programs.
- Support for SSE registers was added for x86. This doesn't work for
- multi-threaded programs though.
- * Changes in MIPS configurations.
- Multi-arch support is enabled for all MIPS configurations.
- GDB can now be built as native debugger on SGI Irix 6.x systems for
- debugging n32 executables. (Debugging 64-bit executables is not yet
- supported.)
- * Unified support for hardware watchpoints in all x86 configurations.
- Most (if not all) native x86 configurations support hardware-assisted
- breakpoints and watchpoints in a unified manner. This support
- implements debug register sharing between watchpoints, which allows to
- put a virtually infinite number of watchpoints on the same address,
- and also supports watching regions up to 16 bytes with several debug
- registers.
- The new maintenance command `maintenance show-debug-regs' toggles
- debugging print-outs in functions that insert, remove, and test
- watchpoints and hardware breakpoints.
- * Changes in the DJGPP native configuration.
- New command ``info dos sysinfo'' displays assorted information about
- the CPU, OS, memory, and DPMI server.
- New commands ``info dos gdt'', ``info dos ldt'', and ``info dos idt''
- display information about segment descriptors stored in GDT, LDT, and
- IDT.
- New commands ``info dos pde'' and ``info dos pte'' display entries
- from Page Directory and Page Tables (for now works with CWSDPMI only).
- New command ``info dos address-pte'' displays the Page Table entry for
- a given linear address.
- GDB can now pass command lines longer than 126 characters to the
- program being debugged (requires an update to the libdbg.a library
- which is part of the DJGPP development kit).
- DWARF2 debug info is now supported.
- It is now possible to `step' and `next' through calls to `longjmp'.
- * Changes in documentation.
- All GDB documentation was converted to GFDL, the GNU Free
- Documentation License.
- Tracepoints-related commands are now fully documented in the GDB
- manual.
- TUI, the Text-mode User Interface, is now documented in the manual.
- Tracepoints-related commands are now fully documented in the GDB
- manual.
- The "GDB Internals" manual now has an index. It also includes
- documentation of `ui_out' functions, GDB coding standards, x86
- hardware watchpoints, and memory region attributes.
- * GDB's version number moved to ``version.in''
- The Makefile variable VERSION has been replaced by the file
- ``version.in''. People creating GDB distributions should update the
- contents of this file.
- * gdba.el deleted
- GUD support is now a standard part of the EMACS distribution.
- *** Changes in GDB 5.0:
- * Improved support for debugging FP programs on x86 targets
- Unified and much-improved support for debugging floating-point
- programs on all x86 targets. In particular, ``info float'' now
- displays the FP registers in the same format on all x86 targets, with
- greater level of detail.
- * Improvements and bugfixes in hardware-assisted watchpoints
- It is now possible to watch array elements, struct members, and
- bitfields with hardware-assisted watchpoints. Data-read watchpoints
- on x86 targets no longer erroneously trigger when the address is
- written.
- * Improvements in the native DJGPP version of GDB
- The distribution now includes all the scripts and auxiliary files
- necessary to build the native DJGPP version on MS-DOS/MS-Windows
- machines ``out of the box''.
- The DJGPP version can now debug programs that use signals. It is
- possible to catch signals that happened in the debuggee, deliver
- signals to it, interrupt it with Ctrl-C, etc. (Previously, a signal
- would kill the program being debugged.) Programs that hook hardware
- interrupts (keyboard, timer, etc.) can also be debugged.
- It is now possible to debug DJGPP programs that redirect their
- standard handles or switch them to raw (as opposed to cooked) mode, or
- even close them. The command ``run < foo > bar'' works as expected,
- and ``info terminal'' reports useful information about the debuggee's
- terminal, including raw/cooked mode, redirection, etc.
- The DJGPP version now uses termios functions for console I/O, which
- enables debugging graphics programs. Interrupting GDB with Ctrl-C
- also works.
- DOS-style file names with drive letters are now fully supported by
- GDB.
- It is now possible to debug DJGPP programs that switch their working
- directory. It is also possible to rerun the debuggee any number of
- times without restarting GDB; thus, you can use the same setup,
- breakpoints, etc. for many debugging sessions.
- * New native configurations
- ARM GNU/Linux arm*-*-linux*
- PowerPC GNU/Linux powerpc-*-linux*
- * New targets
- Motorola MCore mcore-*-*
- x86 VxWorks i[3456]86-*-vxworks*
- PowerPC VxWorks powerpc-*-vxworks*
- TI TMS320C80 tic80-*-*
- * OBSOLETE configurations
- Altos 3068 m68*-altos-*
- Convex c1-*-*, c2-*-*
- Pyramid pyramid-*-*
- ARM RISCix arm-*-* (as host)
- Tahoe tahoe-*-*
- Configurations that have been declared obsolete will be commented out,
- but the code will be left in place. If there is no activity to revive
- these configurations before the next release of GDB, the sources will
- be permanently REMOVED.
- * Gould support removed
- Support for the Gould PowerNode and NP1 has been removed.
- * New features for SVR4
- On SVR4 native platforms (such as Solaris), if you attach to a process
- without first loading a symbol file, GDB will now attempt to locate and
- load symbols from the running process's executable file.
- * Many C++ enhancements
- C++ support has been greatly improved. Overload resolution now works properly
- in almost all cases. RTTI support is on the way.
- * Remote targets can connect to a sub-program
- A popen(3) style serial-device has been added. This device starts a
- sub-process (such as a stand-alone simulator) and then communicates
- with that. The sub-program to run is specified using the syntax
- ``|<program> <args>'' vis:
- (gdb) set remotedebug 1
- (gdb) target extended-remote |mn10300-elf-sim program-args
- * MIPS 64 remote protocol
- A long standing bug in the mips64 remote protocol where by GDB
- expected certain 32 bit registers (ex SR) to be transfered as 32
- instead of 64 bits has been fixed.
- The command ``set remote-mips64-transfers-32bit-regs on'' has been
- added to provide backward compatibility with older versions of GDB.
- * ``set remotebinarydownload'' replaced by ``set remote X-packet''
- The command ``set remotebinarydownload'' command has been replaced by
- ``set remote X-packet''. Other commands in ``set remote'' family
- include ``set remote P-packet''.
- * Breakpoint commands accept ranges.
- The breakpoint commands ``enable'', ``disable'', and ``delete'' now
- accept a range of breakpoints, e.g. ``5-7''. The tracepoint command
- ``tracepoint passcount'' also accepts a range of tracepoints.
- * ``apropos'' command added.
- The ``apropos'' command searches through command names and
- documentation strings, printing out matches, making it much easier to
- try to find a command that does what you are looking for.
- * New MI interface
- A new machine oriented interface (MI) has been added to GDB. This
- interface is designed for debug environments running GDB as a separate
- process. This is part of the long term libGDB project. See the
- "GDB/MI" chapter of the GDB manual for further information. It can be
- enabled by configuring with:
- .../configure --enable-gdbmi
- *** Changes in GDB-4.18:
- * New native configurations
- HP-UX 10.20 hppa*-*-hpux10.20
- HP-UX 11.x hppa*-*-hpux11.0*
- M68K GNU/Linux m68*-*-linux*
- * New targets
- Fujitsu FR30 fr30-*-elf*
- Intel StrongARM strongarm-*-*
- Mitsubishi D30V d30v-*-*
- * OBSOLETE configurations
- Gould PowerNode, NP1 np1-*-*, pn-*-*
- Configurations that have been declared obsolete will be commented out,
- but the code will be left in place. If there is no activity to revive
- these configurations before the next release of GDB, the sources will
- be permanently REMOVED.
- * ANSI/ISO C
- As a compatibility experiment, GDB's source files buildsym.h and
- buildsym.c have been converted to pure standard C, no longer
- containing any K&R compatibility code. We believe that all systems in
- use today either come with a standard C compiler, or have a GCC port
- available. If this is not true, please report the affected
- configuration to bug-gdb@gnu.org immediately. See the README file for
- information about getting a standard C compiler if you don't have one
- already.
- * Readline 2.2
- GDB now uses readline 2.2.
- * set extension-language
- You can now control the mapping between filename extensions and source
- languages by using the `set extension-language' command. For instance,
- you can ask GDB to treat .c files as C++ by saying
- set extension-language .c c++
- The command `info extensions' lists all of the recognized extensions
- and their associated languages.
- * Setting processor type for PowerPC and RS/6000
- When GDB is configured for a powerpc*-*-* or an rs6000*-*-* target,
- you can use the `set processor' command to specify what variant of the
- PowerPC family you are debugging. The command
- set processor NAME
- sets the PowerPC/RS6000 variant to NAME. GDB knows about the
- following PowerPC and RS6000 variants:
- ppc-uisa PowerPC UISA - a PPC processor as viewed by user-level code
- rs6000 IBM RS6000 ("POWER") architecture, user-level view
- 403 IBM PowerPC 403
- 403GC IBM PowerPC 403GC
- 505 Motorola PowerPC 505
- 860 Motorola PowerPC 860 or 850
- 601 Motorola PowerPC 601
- 602 Motorola PowerPC 602
- 603 Motorola/IBM PowerPC 603 or 603e
- 604 Motorola PowerPC 604 or 604e
- 750 Motorola/IBM PowerPC 750 or 750
- At the moment, this command just tells GDB what to name the
- special-purpose processor registers. Since almost all the affected
- registers are inaccessible to user-level programs, this command is
- only useful for remote debugging in its present form.
- * HP-UX support
- Thanks to a major code donation from Hewlett-Packard, GDB now has much
- more extensive support for HP-UX. Added features include shared
- library support, kernel threads and hardware watchpoints for 11.00,
- support for HP's ANSI C and C++ compilers, and a compatibility mode
- for xdb and dbx commands.
- * Catchpoints
- HP's donation includes the new concept of catchpoints, which is a
- generalization of the old catch command. On HP-UX, it is now possible
- to catch exec, fork, and vfork, as well as library loading.
- This means that the existing catch command has changed; its first
- argument now specifies the type of catch to be set up. See the
- output of "help catch" for a list of catchpoint types.
- * Debugging across forks
- On HP-UX, you can choose which process to debug when a fork() happens
- in the inferior.
- * TUI
- HP has donated a curses-based terminal user interface (TUI). To get
- it, build with --enable-tui. Although this can be enabled for any
- configuration, at present it only works for native HP debugging.
- * GDB remote protocol additions
- A new protocol packet 'X' that writes binary data is now available.
- Default behavior is to try 'X', then drop back to 'M' if the stub
- fails to respond. The settable variable `remotebinarydownload'
- allows explicit control over the use of 'X'.
- For 64-bit targets, the memory packets ('M' and 'm') can now contain a
- full 64-bit address. The command
- set remoteaddresssize 32
- can be used to revert to the old behaviour. For existing remote stubs
- the change should not be noticed, as the additional address information
- will be discarded.
- In order to assist in debugging stubs, you may use the maintenance
- command `packet' to send any text string to the stub. For instance,
- maint packet heythere
- sends the packet "$heythere#<checksum>". Note that it is very easy to
- disrupt a debugging session by sending the wrong packet at the wrong
- time.
- The compare-sections command allows you to compare section data on the
- target to what is in the executable file without uploading or
- downloading, by comparing CRC checksums.
- * Tracing can collect general expressions
- You may now collect general expressions at tracepoints. This requires
- further additions to the target-side stub; see tracepoint.c and
- doc/agentexpr.texi for further details.
- * mask-address variable for Mips
- For Mips targets, you may control the zeroing of the upper 32 bits of
- a 64-bit address by entering `set mask-address on'. This is mainly
- of interest to users of embedded R4xxx and R5xxx processors.
- * Higher serial baud rates
- GDB's serial code now allows you to specify baud rates 57600, 115200,
- 230400, and 460800 baud. (Note that your host system may not be able
- to achieve all of these rates.)
- * i960 simulator
- The i960 configuration now includes an initial implementation of a
- builtin simulator, contributed by Jim Wilson.
- *** Changes in GDB-4.17:
- * New native configurations
- Alpha GNU/Linux alpha*-*-linux*
- Unixware 2.x i[3456]86-unixware2*
- Irix 6.x mips*-sgi-irix6*
- PowerPC GNU/Linux powerpc-*-linux*
- PowerPC Solaris powerpcle-*-solaris*
- Sparc GNU/Linux sparc-*-linux*
- Motorola sysV68 R3V7.1 m68k-motorola-sysv
- * New targets
- Argonaut Risc Chip (ARC) arc-*-*
- Hitachi H8/300S h8300*-*-*
- Matsushita MN10200 w/simulator mn10200-*-*
- Matsushita MN10300 w/simulator mn10300-*-*
- MIPS NEC VR4100 mips64*vr4100*{,el}-*-elf*
- MIPS NEC VR5000 mips64*vr5000*{,el}-*-elf*
- MIPS Toshiba TX39 mips64*tx39*{,el}-*-elf*
- Mitsubishi D10V w/simulator d10v-*-*
- Mitsubishi M32R/D w/simulator m32r-*-elf*
- Tsqware Sparclet sparclet-*-*
- NEC V850 w/simulator v850-*-*
- * New debugging protocols
- ARM with RDI protocol arm*-*-*
- M68K with dBUG monitor m68*-*-{aout,coff,elf}
- DDB and LSI variants of PMON protocol mips*-*-*
- PowerPC with DINK32 monitor powerpc{,le}-*-eabi
- PowerPC with SDS protocol powerpc{,le}-*-eabi
- Macraigor OCD (Wiggler) devices powerpc{,le}-*-eabi
- * DWARF 2
- All configurations can now understand and use the DWARF 2 debugging
- format. The choice is automatic, if the symbol file contains DWARF 2
- information.
- * Java frontend
- GDB now includes basic Java language support. This support is
- only useful with Java compilers that produce native machine code.
- * solib-absolute-prefix and solib-search-path
- For SunOS and SVR4 shared libraries, you may now set the prefix for
- loading absolute shared library symbol files, and the search path for
- locating non-absolute shared library symbol files.
- * Live range splitting
- GDB can now effectively debug code for which GCC has performed live
- range splitting as part of its optimization. See gdb/doc/LRS for
- more details on the expected format of the stabs information.
- * Hurd support
- GDB's support for the GNU Hurd, including thread debugging, has been
- updated to work with current versions of the Hurd.
- * ARM Thumb support
- GDB's ARM target configuration now handles the ARM7T (Thumb) 16-bit
- instruction set. ARM GDB automatically detects when Thumb
- instructions are in use, and adjusts disassembly and backtracing
- accordingly.
- * MIPS16 support
- GDB's MIPS target configurations now handle the MIP16 16-bit
- instruction set.
- * Overlay support
- GDB now includes support for overlays; if an executable has been
- linked such that multiple sections are based at the same address, GDB
- will decide which section to use for symbolic info. You can choose to
- control the decision manually, using overlay commands, or implement
- additional target-side support and use "overlay load-target" to bring
- in the overlay mapping. Do "help overlay" for more detail.
- * info symbol
- The command "info symbol <address>" displays information about
- the symbol at the specified address.
- * Trace support
- The standard remote protocol now includes an extension that allows
- asynchronous collection and display of trace data. This requires
- extensive support in the target-side debugging stub. Tracing mode
- includes a new interaction mode in GDB and new commands: see the
- file tracepoint.c for more details.
- * MIPS simulator
- Configurations for embedded MIPS now include a simulator contributed
- by Cygnus Solutions. The simulator supports the instruction sets
- of most MIPS variants.
- * Sparc simulator
- Sparc configurations may now include the ERC32 simulator contributed
- by the European Space Agency. The simulator is not built into
- Sparc targets by default; configure with --enable-sim to include it.
- * set architecture
- For target configurations that may include multiple variants of a
- basic architecture (such as MIPS and SH), you may now set the
- architecture explicitly. "set arch" sets, "info arch" lists
- the possible architectures.
- *** Changes in GDB-4.16:
- * New native configurations
- Windows 95, x86 Windows NT i[345]86-*-cygwin32
- M68K NetBSD m68k-*-netbsd*
- PowerPC AIX 4.x powerpc-*-aix*
- PowerPC MacOS powerpc-*-macos*
- PowerPC Windows NT powerpcle-*-cygwin32
- RS/6000 AIX 4.x rs6000-*-aix4*
- * New targets
- ARM with RDP protocol arm-*-*
- I960 with MON960 i960-*-coff
- MIPS VxWorks mips*-*-vxworks*
- MIPS VR4300 with PMON mips64*vr4300{,el}-*-elf*
- PowerPC with PPCBUG monitor powerpc{,le}-*-eabi*
- Hitachi SH3 sh-*-*
- Matra Sparclet sparclet-*-*
- * PowerPC simulator
- The powerpc-eabi configuration now includes the PSIM simulator,
- contributed by Andrew Cagney, with assistance from Mike Meissner.
- PSIM is a very elaborate model of the PowerPC, including not only
- basic instruction set execution, but also details of execution unit
- performance and I/O hardware. See sim/ppc/README for more details.
- * Solaris 2.5
- GDB now works with Solaris 2.5.
- * Windows 95/NT native
- GDB will now work as a native debugger on Windows 95 and Windows NT.
- To build it from source, you must use the "gnu-win32" environment,
- which uses a DLL to emulate enough of Unix to run the GNU tools.
- Further information, binaries, and sources are available at
- ftp.cygnus.com, under pub/gnu-win32.
- * dont-repeat command
- If a user-defined command includes the command `dont-repeat', then the
- command will not be repeated if the user just types return. This is
- useful if the command is time-consuming to run, so that accidental
- extra keystrokes don't run the same command many times.
- * Send break instead of ^C
- The standard remote protocol now includes an option to send a break
- rather than a ^C to the target in order to interrupt it. By default,
- GDB will send ^C; to send a break, set the variable `remotebreak' to 1.
- * Remote protocol timeout
- The standard remote protocol includes a new variable `remotetimeout'
- that allows you to set the number of seconds before GDB gives up trying
- to read from the target. The default value is 2.
- * Automatic tracking of dynamic object loading (HPUX and Solaris only)
- By default GDB will automatically keep track of objects as they are
- loaded and unloaded by the dynamic linker. By using the command `set
- stop-on-solib-events 1' you can arrange for GDB to stop the inferior
- when shared library events occur, thus allowing you to set breakpoints
- in shared libraries which are explicitly loaded by the inferior.
- Note this feature does not work on hpux8. On hpux9 you must link
- /usr/lib/end.o into your program. This feature should work
- automatically on hpux10.
- * Irix 5.x hardware watchpoint support
- Irix 5 configurations now support the use of hardware watchpoints.
- * Mips protocol "SYN garbage limit"
- When debugging a Mips target using the `target mips' protocol, you
- may set the number of characters that GDB will ignore by setting
- the `syn-garbage-limit'. A value of -1 means that GDB will ignore
- every character. The default value is 1050.
- * Recording and replaying remote debug sessions
- If you set `remotelogfile' to the name of a file, gdb will write to it
- a recording of a remote debug session. This recording may then be
- replayed back to gdb using "gdbreplay". See gdbserver/README for
- details. This is useful when you have a problem with GDB while doing
- remote debugging; you can make a recording of the session and send it
- to someone else, who can then recreate the problem.
- * Speedups for remote debugging
- GDB includes speedups for downloading and stepping MIPS systems using
- the IDT monitor, fast downloads to the Hitachi SH E7000 emulator,
- and more efficient S-record downloading.
- * Memory use reductions and statistics collection
- GDB now uses less memory and reports statistics about memory usage.
- Try the `maint print statistics' command, for example.
- *** Changes in GDB-4.15:
- * Psymtabs for XCOFF
- The symbol reader for AIX GDB now uses partial symbol tables. This
- can greatly improve startup time, especially for large executables.
- * Remote targets use caching
- Remote targets now use a data cache to speed up communication with the
- remote side. The data cache could lead to incorrect results because
- it doesn't know about volatile variables, thus making it impossible to
- debug targets which use memory mapped I/O devices. `set remotecache
- off' turns the data cache off.
- * Remote targets may have threads
- The standard remote protocol now includes support for multiple threads
- in the target system, using new protocol commands 'H' and 'T'. See
- gdb/remote.c for details.
- * NetROM support
- If GDB is configured with `--enable-netrom', then it will include
- support for the NetROM ROM emulator from XLNT Designs. The NetROM
- acts as though it is a bank of ROM on the target board, but you can
- write into it over the network. GDB's support consists only of
- support for fast loading into the emulated ROM; to debug, you must use
- another protocol, such as standard remote protocol. The usual
- sequence is something like
- target nrom <netrom-hostname>
- load <prog>
- target remote <netrom-hostname>:1235
- * Macintosh host
- GDB now includes support for the Apple Macintosh, as a host only. It
- may be run as either an MPW tool or as a standalone application, and
- it can debug through the serial port. All the usual GDB commands are
- available, but to the target command, you must supply "serial" as the
- device type instead of "/dev/ttyXX". See mpw-README in the main
- directory for more information on how to build. The MPW configuration
- scripts */mpw-config.in support only a few targets, and only the
- mips-idt-ecoff target has been tested.
- * Autoconf
- GDB configuration now uses autoconf. This is not user-visible,
- but does simplify configuration and building.
- * hpux10
- GDB now supports hpux10.
- *** Changes in GDB-4.14:
- * New native configurations
- x86 FreeBSD i[345]86-*-freebsd
- x86 NetBSD i[345]86-*-netbsd
- NS32k NetBSD ns32k-*-netbsd
- Sparc NetBSD sparc-*-netbsd
- * New targets
- A29K VxWorks a29k-*-vxworks
- HP PA PRO embedded (WinBond W89K & Oki OP50N) hppa*-*-pro*
- CPU32 EST-300 emulator m68*-*-est*
- PowerPC ELF powerpc-*-elf
- WDC 65816 w65-*-*
- * Alpha OSF/1 support for procfs
- GDB now supports procfs under OSF/1-2.x and higher, which makes it
- possible to attach to running processes. As the mounting of the /proc
- filesystem is optional on the Alpha, GDB automatically determines
- the availability of /proc during startup. This can lead to problems
- if /proc is unmounted after GDB has been started.
- * Arguments to user-defined commands
- User commands may accept up to 10 arguments separated by whitespace.
- Arguments are accessed within the user command via $arg0..$arg9. A
- trivial example:
- define adder
- print $arg0 + $arg1 + $arg2
- To execute the command use:
- adder 1 2 3
- Defines the command "adder" which prints the sum of its three arguments.
- Note the arguments are text substitutions, so they may reference variables,
- use complex expressions, or even perform inferior function calls.
- * New `if' and `while' commands
- This makes it possible to write more sophisticated user-defined
- commands. Both commands take a single argument, which is the
- expression to evaluate, and must be followed by the commands to
- execute, one per line, if the expression is nonzero, the list being
- terminated by the word `end'. The `if' command list may include an
- `else' word, which causes the following commands to be executed only
- if the expression is zero.
- * Fortran source language mode
- GDB now includes partial support for Fortran 77. It will recognize
- Fortran programs and can evaluate a subset of Fortran expressions, but
- variables and functions may not be handled correctly. GDB will work
- with G77, but does not yet know much about symbols emitted by other
- Fortran compilers.
- * Better HPUX support
- Most debugging facilities now work on dynamic executables for HPPAs
- running hpux9 or later. You can attach to running dynamically linked
- processes, but by default the dynamic libraries will be read-only, so
- for instance you won't be able to put breakpoints in them. To change
- that behavior do the following before running the program:
- adb -w a.out
- __dld_flags?W 0x5
- control-d
- This will cause the libraries to be mapped private and read-write.
- To revert to the normal behavior, do this:
- adb -w a.out
- __dld_flags?W 0x4
- control-d
- You cannot set breakpoints or examine data in the library until after
- the library is loaded if the function/data symbols do not have
- external linkage.
- GDB can now also read debug symbols produced by the HP C compiler on
- HPPAs (sorry, no C++, Fortran or 68k support).
- * Target byte order now dynamically selectable
- You can choose which byte order to use with a target system, via the
- commands "set endian big" and "set endian little", and you can see the
- current setting by using "show endian". You can also give the command
- "set endian auto", in which case GDB will use the byte order
- associated with the executable. Currently, only embedded MIPS
- configurations support dynamic selection of target byte order.
- * New DOS host serial code
- This version uses DPMI interrupts to handle buffered I/O, so you
- no longer need to run asynctsr when debugging boards connected to
- a PC's serial port.
- *** Changes in GDB-4.13:
- * New "complete" command
- This lists all the possible completions for the rest of the line, if it
- were to be given as a command itself. This is intended for use by emacs.
- * Trailing space optional in prompt
- "set prompt" no longer adds a space for you after the prompt you set. This
- allows you to set a prompt which ends in a space or one that does not.
- * Breakpoint hit counts
- "info break" now displays a count of the number of times the breakpoint
- has been hit. This is especially useful in conjunction with "ignore"; you
- can ignore a large number of breakpoint hits, look at the breakpoint info
- to see how many times the breakpoint was hit, then run again, ignoring one
- less than that number, and this will get you quickly to the last hit of
- that breakpoint.
- * Ability to stop printing at NULL character
- "set print null-stop" will cause GDB to stop printing the characters of
- an array when the first NULL is encountered. This is useful when large
- arrays actually contain only short strings.
- * Shared library breakpoints
- In SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can now set
- breakpoints in shared libraries before the executable is run.
- * Hardware watchpoints
- There is a new hardware breakpoint for the watch command for sparclite
- targets. See gdb/sparclite/hw_breakpoint.note.
- Hardware watchpoints are also now supported under GNU/Linux.
-
- * Annotations
- Annotations have been added. These are for use with graphical interfaces,
- and are still experimental. Currently only gdba.el uses these.
- * Improved Irix 5 support
- GDB now works properly with Irix 5.2.
- * Improved HPPA support
- GDB now works properly with the latest GCC and GAS.
- * New native configurations
- Sequent PTX4 i[34]86-sequent-ptx4
- HPPA running OSF/1 hppa*-*-osf*
- Atari TT running SVR4 m68*-*-sysv4*
- RS/6000 LynxOS rs6000-*-lynxos*
- * New targets
- OS/9000 i[34]86-*-os9k
- MIPS R4000 mips64*{,el}-*-{ecoff,elf}
- Sparc64 sparc64-*-*
- * Hitachi SH7000 and E7000-PC ICE support
- There is now support for communicating with the Hitachi E7000-PC ICE.
- This is available automatically when GDB is configured for the SH.
- * Fixes
- As usual, a variety of small fixes and improvements, both generic
- and configuration-specific. See the ChangeLog for more detail.
- *** Changes in GDB-4.12:
- * Irix 5 is now supported
- * HPPA support
- GDB-4.12 on the HPPA has a number of changes which make it unable
- to debug the output from the currently released versions of GCC and
- GAS (GCC 2.5.8 and GAS-2.2 or PAGAS-1.36). Until the next major release
- of GCC and GAS, versions of these tools designed to work with GDB-4.12
- can be retrieved via anonymous ftp from jaguar.cs.utah.edu:/dist.
- *** Changes in GDB-4.11:
- * User visible changes:
- * Remote Debugging
- The "set remotedebug" option is now consistent between the mips remote
- target, remote targets using the gdb-specific protocol, UDI (AMD's
- debug protocol for the 29k) and the 88k bug monitor. It is now an
- integer specifying a debug level (normally 0 or 1, but 2 means more
- debugging info for the mips target).
- * DEC Alpha native support
- GDB now works on the DEC Alpha. GCC 2.4.5 does not produce usable
- debug info, but GDB works fairly well with the DEC compiler and should
- work with a future GCC release. See the README file for a few
- Alpha-specific notes.
- * Preliminary thread implementation
- GDB now has preliminary thread support for both SGI/Irix and LynxOS.
- * LynxOS native and target support for 386
- This release has been hosted on LynxOS 2.2, and also can be configured
- to remotely debug programs running under LynxOS (see gdb/gdbserver/README
- for details).
- * Improvements in C++ mangling/demangling.
- This release has much better g++ debugging, specifically in name
- mangling/demangling, virtual function calls, print virtual table,
- call methods, ...etc.
- *** Changes in GDB-4.10:
- * User visible changes:
- Remote debugging using the GDB-specific (`target remote') protocol now
- supports the `load' command. This is only useful if you have some
- other way of getting the stub to the target system, and you can put it
- somewhere in memory where it won't get clobbered by the download.
- Filename completion now works.
- When run under emacs mode, the "info line" command now causes the
- arrow to point to the line specified. Also, "info line" prints
- addresses in symbolic form (as well as hex).
- All vxworks based targets now support a user settable option, called
- vxworks-timeout. This option represents the number of seconds gdb
- should wait for responses to rpc's. You might want to use this if
- your vxworks target is, perhaps, a slow software simulator or happens
- to be on the far side of a thin network line.
- * DEC alpha support
- This release contains support for using a DEC alpha as a GDB host for
- cross debugging. Native alpha debugging is not supported yet.
- *** Changes in GDB-4.9:
- * Testsuite
- This is the first GDB release which is accompanied by a matching testsuite.
- The testsuite requires installation of dejagnu, which should be available
- via ftp from most sites that carry GNU software.
- * C++ demangling
- 'Cfront' style demangling has had its name changed to 'ARM' style, to
- emphasize that it was written from the specifications in the C++ Annotated
- Reference Manual, not necessarily to be compatible with AT&T cfront. Despite
- disclaimers, it still generated too much confusion with users attempting to
- use gdb with AT&T cfront.
- * Simulators
- GDB now uses a standard remote interface to a simulator library.
- So far, the library contains simulators for the Zilog Z8001/2, the
- Hitachi H8/300, H8/500 and Super-H.
- * New targets supported
- H8/300 simulator h8300-hitachi-hms or h8300hms
- H8/500 simulator h8500-hitachi-hms or h8500hms
- SH simulator sh-hitachi-hms or sh
- Z8000 simulator z8k-zilog-none or z8ksim
- IDT MIPS board over serial line mips-idt-ecoff
- Cross-debugging to GO32 targets is supported. It requires a custom
- version of the i386-stub.c module which is integrated with the
- GO32 memory extender.
- * New remote protocols
- MIPS remote debugging protocol.
- * New source languages supported
- This version includes preliminary support for Chill, a Pascal like language
- used by telecommunications companies. Chill support is also being integrated
- into the GNU compiler, but we don't know when it will be publically available.
- *** Changes in GDB-4.8:
- * HP Precision Architecture supported
- GDB now supports HP PA-RISC machines running HPUX. A preliminary
- version of this support was available as a set of patches from the
- University of Utah. GDB does not support debugging of programs
- compiled with the HP compiler, because HP will not document their file
- format. Instead, you must use GCC (version 2.3.2 or later) and PA-GAS
- (as available from jaguar.cs.utah.edu:/dist/pa-gas.u4.tar.Z).
- Many problems in the preliminary version have been fixed.
- * Faster and better demangling
- We have improved template demangling and fixed numerous bugs in the GNU style
- demangler. It can now handle type modifiers such as `static' or `const'. Wide
- character types (wchar_t) are now supported. Demangling of each symbol is now
- only done once, and is cached when the symbol table for a file is read in.
- This results in a small increase in memory usage for C programs, a moderate
- increase in memory usage for C++ programs, and a fantastic speedup in
- symbol lookups.
- `Cfront' style demangling still doesn't work with AT&T cfront. It was written
- from the specifications in the Annotated Reference Manual, which AT&T's
- compiler does not actually implement.
- * G++ multiple inheritance compiler problem
- In the 2.3.2 release of gcc/g++, how the compiler resolves multiple
- inheritance lattices was reworked to properly discover ambiguities. We
- recently found an example which causes this new algorithm to fail in a
- very subtle way, producing bad debug information for those classes.
- The file 'gcc.patch' (in this directory) can be applied to gcc to
- circumvent the problem. A future GCC release will contain a complete
- fix.
- The previous G++ debug info problem (mentioned below for the gdb-4.7
- release) is fixed in gcc version 2.3.2.
- * Improved configure script
- The `configure' script will now attempt to guess your system type if
- you don't supply a host system type. The old scheme of supplying a
- host system triplet is preferable over using this. All the magic is
- done in the new `config.guess' script. Examine it for details.
- We have also brought our configure script much more in line with the FSF's
- version. It now supports the --with-xxx options. In particular,
- `--with-minimal-bfd' can be used to make the GDB binary image smaller.
- The resulting GDB will not be able to read arbitrary object file formats --
- only the format ``expected'' to be used on the configured target system.
- We hope to make this the default in a future release.
- * Documentation improvements
- There's new internal documentation on how to modify GDB, and how to
- produce clean changes to the code. We implore people to read it
- before submitting changes.
- The GDB manual uses new, sexy Texinfo conditionals, rather than arcane
- M4 macros. The new texinfo.tex is provided in this release. Pre-built
- `info' files are also provided. To build `info' files from scratch,
- you will need the latest `makeinfo' release, which will be available in
- a future texinfo-X.Y release.
- *NOTE* The new texinfo.tex can cause old versions of TeX to hang.
- We're not sure exactly which versions have this problem, but it has
- been seen in 3.0. We highly recommend upgrading to TeX version 3.141
- or better. If that isn't possible, there is a patch in
- `texinfo/tex3patch' that will modify `texinfo/texinfo.tex' to work
- around this problem.
- * New features
- GDB now supports array constants that can be used in expressions typed in by
- the user. The syntax is `{element, element, ...}'. Ie: you can now type
- `print {1, 2, 3}', and it will build up an array in memory malloc'd in
- the target program.
- The new directory `gdb/sparclite' contains a program that demonstrates
- how the sparc-stub.c remote stub runs on a Fujitsu SPARClite processor.
- * New native hosts supported
- HP/PA-RISC under HPUX using GNU tools hppa1.1-hp-hpux
- 386 CPUs running SCO Unix 3.2v4 i386-unknown-sco3.2v4
- * New targets supported
- AMD 29k family via UDI a29k-amd-udi or udi29k
- * New file formats supported
- BFD now supports reading HP/PA-RISC executables (SOM file format?),
- HPUX core files, and SCO 3.2v2 core files.
- * Major bug fixes
- Attaching to processes now works again; thanks for the many bug reports.
- We have also stomped on a bunch of core dumps caused by
- printf_filtered("%s") problems.
- We eliminated a copyright problem on the rpc and ptrace header files
- for VxWorks, which was discovered at the last minute during the 4.7
- release. You should now be able to build a VxWorks GDB.
- You can now interrupt gdb while an attached process is running. This
- will cause the attached process to stop, and give control back to GDB.
- We fixed problems caused by using too many file descriptors
- for reading symbols from object files and libraries. This was
- especially a problem for programs that used many (~100) shared
- libraries.
- The `step' command now only enters a subroutine if there is line number
- information for the subroutine. Otherwise it acts like the `next'
- command. Previously, `step' would enter subroutines if there was
- any debugging information about the routine. This avoids problems
- when using `cc -g1' on MIPS machines.
- * Internal improvements
- GDB's internal interfaces have been improved to make it easier to support
- debugging of multiple languages in the future.
- GDB now uses a common structure for symbol information internally.
- Minimal symbols (derived from linkage symbols in object files), partial
- symbols (from a quick scan of debug information), and full symbols
- contain a common subset of information, making it easier to write
- shared code that handles any of them.
- * New command line options
- We now accept --silent as an alias for --quiet.
- * Mmalloc licensing
- The memory-mapped-malloc library is now licensed under the GNU Library
- General Public License.
- *** Changes in GDB-4.7:
- * Host/native/target split
- GDB has had some major internal surgery to untangle the support for
- hosts and remote targets. Now, when you configure GDB for a remote
- target, it will no longer load in all of the support for debugging
- local programs on the host. When fully completed and tested, this will
- ensure that arbitrary host/target combinations are possible.
- The primary conceptual shift is to separate the non-portable code in
- GDB into three categories. Host specific code is required any time GDB
- is compiled on that host, regardless of the target. Target specific
- code relates to the peculiarities of the target, but can be compiled on
- any host. Native specific code is everything else: it can only be
- built when the host and target are the same system. Child process
- handling and core file support are two common `native' examples.
- GDB's use of /proc for controlling Unix child processes is now cleaner.
- It has been split out into a single module under the `target_ops' vector,
- plus two native-dependent functions for each system that uses /proc.
- * New hosts supported
- HP/Apollo 68k (under the BSD domain) m68k-apollo-bsd or apollo68bsd
- 386 CPUs running various BSD ports i386-unknown-bsd or 386bsd
- 386 CPUs running SCO Unix i386-unknown-scosysv322 or i386sco
- * New targets supported
- Fujitsu SPARClite sparclite-fujitsu-none or sparclite
- 68030 and CPU32 m68030-*-*, m68332-*-*
- * New native hosts supported
- 386 CPUs running various BSD ports i386-unknown-bsd or 386bsd
- (386bsd is not well tested yet)
- 386 CPUs running SCO Unix i386-unknown-scosysv322 or sco
- * New file formats supported
- BFD now supports COFF files for the Zilog Z8000 microprocessor. It
- supports reading of `a.out.adobe' object files, which are an a.out
- format extended with minimal information about multiple sections.
- * New commands
- `show copying' is the same as the old `info copying'.
- `show warranty' is the same as `info warrantee'.
- These were renamed for consistency. The old commands continue to work.
- `info handle' is a new alias for `info signals'.
- You can now define pre-command hooks, which attach arbitrary command
- scripts to any command. The commands in the hook will be executed
- prior to the user's command. You can also create a hook which will be
- executed whenever the program stops. See gdb.texinfo.
- * C++ improvements
- We now deal with Cfront style name mangling, and can even extract type
- info from mangled symbols. GDB can automatically figure out which
- symbol mangling style your C++ compiler uses.
- Calling of methods and virtual functions has been improved as well.
- * Major bug fixes
- The crash that occurred when debugging Sun Ansi-C compiled binaries is
- fixed. This was due to mishandling of the extra N_SO stabs output
- by the compiler.
- We also finally got Ultrix 4.2 running in house, and fixed core file
- support, with help from a dozen people on the net.
- John M. Farrell discovered that the reason that single-stepping was so
- slow on all of the Mips based platforms (primarily SGI and DEC) was
- that we were trying to demangle and lookup a symbol used for internal
- purposes on every instruction that was being stepped through. Changing
- the name of that symbol so that it couldn't be mistaken for a C++
- mangled symbol sped things up a great deal.
- Rich Pixley sped up symbol lookups in general by getting much smarter
- about when C++ symbol mangling is necessary. This should make symbol
- completion (TAB on the command line) much faster. It's not as fast as
- we'd like, but it's significantly faster than gdb-4.6.
- * AMD 29k support
- A new user controllable variable 'call_scratch_address' can
- specify the location of a scratch area to be used when GDB
- calls a function in the target. This is necessary because the
- usual method of putting the scratch area on the stack does not work
- in systems that have separate instruction and data spaces.
- We integrated changes to support the 29k UDI (Universal Debugger
- Interface), but discovered at the last minute that we didn't have all
- of the appropriate copyright paperwork. We are working with AMD to
- resolve this, and hope to have it available soon.
- * Remote interfaces
- We have sped up the remote serial line protocol, especially for targets
- with lots of registers. It now supports a new `expedited status' ('T')
- message which can be used in place of the existing 'S' status message.
- This allows the remote stub to send only the registers that GDB
- needs to make a quick decision about single-stepping or conditional
- breakpoints, eliminating the need to fetch the entire register set for
- each instruction being stepped through.
- The GDB remote serial protocol now implements a write-through cache for
- registers, only re-reading the registers if the target has run.
- There is also a new remote serial stub for SPARC processors. You can
- find it in gdb-4.7/gdb/sparc-stub.c. This was written to support the
- Fujitsu SPARClite processor, but will run on any stand-alone SPARC
- processor with a serial port.
- * Configuration
- Configure.in files have become much easier to read and modify. A new
- `table driven' format makes it more obvious what configurations are
- supported, and what files each one uses.
- * Library changes
- There is a new opcodes library which will eventually contain all of the
- disassembly routines and opcode tables. At present, it only contains
- Sparc and Z8000 routines. This will allow the assembler, debugger, and
- disassembler (binutils/objdump) to share these routines.
- The libiberty library is now copylefted under the GNU Library General
- Public License. This allows more liberal use, and was done so libg++
- can use it. This makes no difference to GDB, since the Library License
- grants all the rights from the General Public License.
- * Documentation
- The file gdb-4.7/gdb/doc/stabs.texinfo is a (relatively) complete
- reference to the stabs symbol info used by the debugger. It is (as far
- as we know) the only published document on this fascinating topic. We
- encourage you to read it, compare it to the stabs information on your
- system, and send improvements on the document in general (to
- bug-gdb@prep.ai.mit.edu).
- And, of course, many bugs have been fixed.
- *** Changes in GDB-4.6:
- * Better support for C++ function names
- GDB now accepts as input the "demangled form" of C++ overloaded function
- names and member function names, and can do command completion on such names
- (using TAB, TAB-TAB, and ESC-?). The names have to be quoted with a pair of
- single quotes. Examples are 'func (int, long)' and 'obj::operator==(obj&)'.
- Make use of command completion, it is your friend.
- GDB also now accepts a variety of C++ mangled symbol formats. They are
- the GNU g++ style, the Cfront (ARM) style, and the Lucid (lcc) style.
- You can tell GDB which format to use by doing a 'set demangle-style {gnu,
- lucid, cfront, auto}'. 'gnu' is the default. Do a 'set demangle-style foo'
- for the list of formats.
- * G++ symbol mangling problem
- Recent versions of gcc have a bug in how they emit debugging information for
- C++ methods (when using dbx-style stabs). The file 'gcc.patch' (in this
- directory) can be applied to gcc to fix the problem. Alternatively, if you
- can't fix gcc, you can #define GCC_MANGLE_BUG when compiling gdb/symtab.c. The
- usual symptom is difficulty with setting breakpoints on methods. GDB complains
- about the method being non-existent. (We believe that version 2.2.2 of GCC has
- this problem.)
- * New 'maintenance' command
- All of the commands related to hacking GDB internals have been moved out of
- the main command set, and now live behind the 'maintenance' command. This
- can also be abbreviated as 'mt'. The following changes were made:
- dump-me -> maintenance dump-me
- info all-breakpoints -> maintenance info breakpoints
- printmsyms -> maintenance print msyms
- printobjfiles -> maintenance print objfiles
- printpsyms -> maintenance print psymbols
- printsyms -> maintenance print symbols
- The following commands are new:
- maintenance demangle Call internal GDB demangler routine to
- demangle a C++ link name and prints the result.
- maintenance print type Print a type chain for a given symbol
- * Change to .gdbinit file processing
- We now read the $HOME/.gdbinit file before processing the argv arguments
- (e.g. reading symbol files or core files). This allows global parameters to
- be set, which will apply during the symbol reading. The ./.gdbinit is still
- read after argv processing.
- * New hosts supported
- Solaris-2.0 !!! sparc-sun-solaris2 or sun4sol2
- GNU/Linux support i386-unknown-linux or linux
- We are also including code to support the HP/PA running BSD and HPUX. This
- is almost guaranteed not to work, as we didn't have time to test or build it
- for this release. We are including it so that the more adventurous (or
- masochistic) of you can play with it. We also had major problems with the
- fact that the compiler that we got from HP doesn't support the -g option.
- It costs extra.
- * New targets supported
- Hitachi H8/300 h8300-hitachi-hms or h8300hms
- * More smarts about finding #include files
- GDB now remembers the compilation directory for all include files, and for
- all files from which C is generated (like yacc and lex sources). This
- greatly improves GDB's ability to find yacc/lex sources, and include files,
- especially if you are debugging your program from a directory different from
- the one that contains your sources.
- We also fixed a bug which caused difficulty with listing and setting
- breakpoints in include files which contain C code. (In the past, you had to
- try twice in order to list an include file that you hadn't looked at before.)
- * Interesting infernals change
- GDB now deals with arbitrary numbers of sections, where the symbols for each
- section must be relocated relative to that section's landing place in the
- target's address space. This work was needed to support ELF with embedded
- stabs used by Solaris-2.0.
- * Bug fixes (of course!)
- There have been loads of fixes for the following things:
- mips, rs6000, 29k/udi, m68k, g++, type handling, elf/dwarf, m88k,
- i960, stabs, DOS(GO32), procfs, etc...
- See the ChangeLog for details.
- *** Changes in GDB-4.5:
- * New machines supported (host and target)
- IBM RS6000 running AIX rs6000-ibm-aix or rs6000
- SGI Irix-4.x mips-sgi-irix4 or iris4
- * New malloc package
- GDB now uses a new memory manager called mmalloc, based on gmalloc.
- Mmalloc is capable of handling multiple heaps of memory. It is also
- capable of saving a heap to a file, and then mapping it back in later.
- This can be used to greatly speedup the startup of GDB by using a
- pre-parsed symbol table which lives in a mmalloc managed heap. For
- more details, please read mmalloc/mmalloc.texi.
- * info proc
- The 'info proc' command (SVR4 only) has been enhanced quite a bit. See
- 'help info proc' for details.
- * MIPS ecoff symbol table format
- The code that reads MIPS symbol table format is now supported on all hosts.
- Thanks to MIPS for releasing the sym.h and symconst.h files to make this
- possible.
- * File name changes for MS-DOS
- Many files in the config directories have been renamed to make it easier to
- support GDB on MS-DOSe systems (which have very restrictive file name
- conventions :-( ). MS-DOSe host support (under DJ Delorie's GO32
- environment) is close to working but has some remaining problems. Note
- that debugging of DOS programs is not supported, due to limitations
- in the ``operating system'', but it can be used to host cross-debugging.
- * Cross byte order fixes
- Many fixes have been made to support cross debugging of Sparc and MIPS
- targets from hosts whose byte order differs.
- * New -mapped and -readnow options
- If memory-mapped files are available on your system through the 'mmap'
- system call, you can use the -mapped option on the `file' or
- `symbol-file' commands to cause GDB to write the symbols from your
- program into a reusable file. If the program you are debugging is
- called `/path/fred', the mapped symbol file will be `./fred.syms'.
- Future GDB debugging sessions will notice the presence of this file,
- and will quickly map in symbol information from it, rather than reading
- the symbol table from the executable program. Using the '-mapped'
- option in a GDB `file' or `symbol-file' command has the same effect as
- starting GDB with the '-mapped' command-line option.
- You can cause GDB to read the entire symbol table immediately by using
- the '-readnow' option with any of the commands that load symbol table
- information (or on the GDB command line). This makes the command
- slower, but makes future operations faster.
- The -mapped and -readnow options are typically combined in order to
- build a `fred.syms' file that contains complete symbol information.
- A simple GDB invocation to do nothing but build a `.syms' file for future
- use is:
- gdb -batch -nx -mapped -readnow programname
- The `.syms' file is specific to the host machine on which GDB is run.
- It holds an exact image of GDB's internal symbol table. It cannot be
- shared across multiple host platforms.
- * longjmp() handling
- GDB is now capable of stepping and nexting over longjmp(), _longjmp(), and
- siglongjmp() without losing control. This feature has not yet been ported to
- all systems. It currently works on many 386 platforms, all MIPS-based
- platforms (SGI, DECstation, etc), and Sun3/4.
- * Solaris 2.0
- Preliminary work has been put in to support the new Solaris OS from Sun. At
- this time, it can control and debug processes, but it is not capable of
- reading symbols.
- * Bug fixes
- As always, many many bug fixes. The major areas were with g++, and mipsread.
- People using the MIPS-based platforms should experience fewer mysterious
- crashes and trashed symbol tables.
- *** Changes in GDB-4.4:
- * New machines supported (host and target)
- SCO Unix on i386 IBM PC clones i386-sco-sysv or i386sco
- (except core files)
- BSD Reno on Vax vax-dec-bsd
- Ultrix on Vax vax-dec-ultrix
- * New machines supported (target)
- AMD 29000 embedded, using EBMON a29k-none-none
- * C++ support
- GDB continues to improve its handling of C++. `References' work better.
- The demangler has also been improved, and now deals with symbols mangled as
- per the Annotated C++ Reference Guide.
- GDB also now handles `stabs' symbol information embedded in MIPS
- `ecoff' symbol tables. Since the ecoff format was not easily
- extensible to handle new languages such as C++, this appeared to be a
- good way to put C++ debugging info into MIPS binaries. This option
- will be supported in the GNU C compiler, version 2, when it is
- released.
- * New features for SVR4
- GDB now handles SVR4 shared libraries, in the same fashion as SunOS
- shared libraries. Debugging dynamically linked programs should present
- only minor differences from debugging statically linked programs.
- The `info proc' command will print out information about any process
- on an SVR4 system (including the one you are debugging). At the moment,
- it prints the address mappings of the process.
- If you bring up GDB on another SVR4 system, please send mail to
- bug-gdb@prep.ai.mit.edu to let us know what changes were reqired (if any).
- * Better dynamic linking support in SunOS
- Reading symbols from shared libraries which contain debugging symbols
- now works properly. However, there remain issues such as automatic
- skipping of `transfer vector' code during function calls, which
- make it harder to debug code in a shared library, than to debug the
- same code linked statically.
- * New Getopt
- GDB is now using the latest `getopt' routines from the FSF. This
- version accepts the -- prefix for options with long names. GDB will
- continue to accept the old forms (-option and +option) as well.
- Various single letter abbreviations for options have been explicity
- added to the option table so that they won't get overshadowed in the
- future by other options that begin with the same letter.
- * Bugs fixed
- The `cleanup_undefined_types' bug that many of you noticed has been squashed.
- Many assorted bugs have been handled. Many more remain to be handled.
- See the various ChangeLog files (primarily in gdb and bfd) for details.
- *** Changes in GDB-4.3:
- * New machines supported (host and target)
- Amiga 3000 running Amix m68k-cbm-svr4 or amix
- NCR 3000 386 running SVR4 i386-ncr-svr4 or ncr3000
- Motorola Delta 88000 running Sys V m88k-motorola-sysv or delta88
- * Almost SCO Unix support
- We had hoped to support:
- SCO Unix on i386 IBM PC clones i386-sco-sysv or i386sco
- (except for core file support), but we discovered very late in the release
- that it has problems with process groups that render gdb unusable. Sorry
- about that. I encourage people to fix it and post the fixes.
- * Preliminary ELF and DWARF support
- GDB can read ELF object files on System V Release 4, and can handle
- debugging records for C, in DWARF format, in ELF files. This support
- is preliminary. If you bring up GDB on another SVR4 system, please
- send mail to bug-gdb@prep.ai.mit.edu to let us know what changes were
- reqired (if any).
- * New Readline
- GDB now uses the latest `readline' library. One user-visible change
- is that two tabs will list possible command completions, which previously
- required typing M-? (meta-question mark, or ESC ?).
- * Bugs fixed
- The `stepi' bug that many of you noticed has been squashed.
- Many bugs in C++ have been handled. Many more remain to be handled.
- See the various ChangeLog files (primarily in gdb and bfd) for details.
- * State of the MIPS world (in case you wondered):
- GDB can understand the symbol tables emitted by the compilers
- supplied by most vendors of MIPS-based machines, including DEC. These
- symbol tables are in a format that essentially nobody else uses.
- Some versions of gcc come with an assembler post-processor called
- mips-tfile. This program is required if you want to do source-level
- debugging of gcc-compiled programs. I believe FSF does not ship
- mips-tfile with gcc version 1, but it will eventually come with gcc
- version 2.
- Debugging of g++ output remains a problem. g++ version 1.xx does not
- really support it at all. (If you're lucky, you should be able to get
- line numbers and stack traces to work, but no parameters or local
- variables.) With some work it should be possible to improve the
- situation somewhat.
- When gcc version 2 is released, you will have somewhat better luck.
- However, even then you will get confusing results for inheritance and
- methods.
- We will eventually provide full debugging of g++ output on
- DECstations. This will probably involve some kind of stabs-in-ecoff
- encapulation, but the details have not been worked out yet.
- *** Changes in GDB-4.2:
- * Improved configuration
- Only one copy of `configure' exists now, and it is not self-modifying.
- Porting BFD is simpler.
- * Stepping improved
- The `step' and `next' commands now only stop at the first instruction
- of a source line. This prevents the multiple stops that used to occur
- in switch statements, for-loops, etc. `Step' continues to stop if a
- function that has debugging information is called within the line.
- * Bug fixing
- Lots of small bugs fixed. More remain.
- * New host supported (not target)
- Intel 386 PC clone running Mach i386-none-mach
- *** Changes in GDB-4.1:
- * Multiple source language support
- GDB now has internal scaffolding to handle several source languages.
- It determines the type of each source file from its filename extension,
- and will switch expression parsing and number formatting to match the
- language of the function in the currently selected stack frame.
- You can also specifically set the language to be used, with
- `set language c' or `set language modula-2'.
- * GDB and Modula-2
- GDB now has preliminary support for the GNU Modula-2 compiler,
- currently under development at the State University of New York at
- Buffalo. Development of both GDB and the GNU Modula-2 compiler will
- continue through the fall of 1991 and into 1992.
- Other Modula-2 compilers are currently not supported, and attempting to
- debug programs compiled with them will likely result in an error as the
- symbol table is read. Feel free to work on it, though!
- There are hooks in GDB for strict type checking and range checking,
- in the `Modula-2 philosophy', but they do not currently work.
- * set write on/off
- GDB can now write to executable and core files (e.g. patch
- a variable's value). You must turn this switch on, specify
- the file ("exec foo" or "core foo"), *then* modify it, e.g.
- by assigning a new value to a variable. Modifications take
- effect immediately.
- * Automatic SunOS shared library reading
- When you run your program, GDB automatically determines where its
- shared libraries (if any) have been loaded, and reads their symbols.
- The `share' command is no longer needed. This also works when
- examining core files.
- * set listsize
- You can specify the number of lines that the `list' command shows.
- The default is 10.
- * New machines supported (host and target)
- SGI Iris (MIPS) running Irix V3: mips-sgi-irix or iris
- Sony NEWS (68K) running NEWSOS 3.x: m68k-sony-sysv or news
- Ultracomputer (29K) running Sym1: a29k-nyu-sym1 or ultra3
- * New hosts supported (not targets)
- IBM RT/PC: romp-ibm-aix or rtpc
- * New targets supported (not hosts)
- AMD 29000 embedded with COFF a29k-none-coff
- AMD 29000 embedded with a.out a29k-none-aout
- Ultracomputer remote kernel debug a29k-nyu-kern
- * New remote interfaces
- AMD 29000 Adapt
- AMD 29000 Minimon
- *** Changes in GDB-4.0:
- * New Facilities
- Wide output is wrapped at good places to make the output more readable.
- Gdb now supports cross-debugging from a host machine of one type to a
- target machine of another type. Communication with the target system
- is over serial lines. The ``target'' command handles connecting to the
- remote system; the ``load'' command will download a program into the
- remote system. Serial stubs for the m68k and i386 are provided. Gdb
- also supports debugging of realtime processes running under VxWorks,
- using SunRPC Remote Procedure Calls over TCP/IP to talk to a debugger
- stub on the target system.
- New CPUs supported include the AMD 29000 and Intel 960.
- GDB now reads object files and symbol tables via a ``binary file''
- library, which allows a single copy of GDB to debug programs of multiple
- object file types such as a.out and coff.
- There is now a GDB reference card in "doc/refcard.tex". (Make targets
- refcard.dvi and refcard.ps are available to format it).
- * Control-Variable user interface simplified
- All variables that control the operation of the debugger can be set
- by the ``set'' command, and displayed by the ``show'' command.
- For example, ``set prompt new-gdb=>'' will change your prompt to new-gdb=>.
- ``Show prompt'' produces the response:
- Gdb's prompt is new-gdb=>.
- What follows are the NEW set commands. The command ``help set'' will
- print a complete list of old and new set commands. ``help set FOO''
- will give a longer description of the variable FOO. ``show'' will show
- all of the variable descriptions and their current settings.
- confirm on/off: Enables warning questions for operations that are
- hard to recover from, e.g. rerunning the program while
- it is already running. Default is ON.
- editing on/off: Enables EMACS style command line editing
- of input. Previous lines can be recalled with
- control-P, the current line can be edited with control-B,
- you can search for commands with control-R, etc.
- Default is ON.
- history filename NAME: NAME is where the gdb command history
- will be stored. The default is .gdb_history,
- or the value of the environment variable
- GDBHISTFILE.
- history size N: The size, in commands, of the command history. The
- default is 256, or the value of the environment variable
- HISTSIZE.
- history save on/off: If this value is set to ON, the history file will
- be saved after exiting gdb. If set to OFF, the
- file will not be saved. The default is OFF.
- history expansion on/off: If this value is set to ON, then csh-like
- history expansion will be performed on
- command line input. The default is OFF.
- radix N: Sets the default radix for input and output. It can be set
- to 8, 10, or 16. Note that the argument to "radix" is interpreted
- in the current radix, so "set radix 10" is always a no-op.
- height N: This integer value is the number of lines on a page. Default
- is 24, the current `stty rows'' setting, or the ``li#''
- setting from the termcap entry matching the environment
- variable TERM.
- width N: This integer value is the number of characters on a line.
- Default is 80, the current `stty cols'' setting, or the ``co#''
- setting from the termcap entry matching the environment
- variable TERM.
- Note: ``set screensize'' is obsolete. Use ``set height'' and
- ``set width'' instead.
- print address on/off: Print memory addresses in various command displays,
- such as stack traces and structure values. Gdb looks
- more ``symbolic'' if you turn this off; it looks more
- ``machine level'' with it on. Default is ON.
- print array on/off: Prettyprint arrays. New convenient format! Default
- is OFF.
- print demangle on/off: Print C++ symbols in "source" form if on,
- "raw" form if off.
- print asm-demangle on/off: Same, for assembler level printouts
- like instructions.
- print vtbl on/off: Prettyprint C++ virtual function tables. Default is OFF.
- * Support for Epoch Environment.
- The epoch environment is a version of Emacs v18 with windowing. One
- new command, ``inspect'', is identical to ``print'', except that if you
- are running in the epoch environment, the value is printed in its own
- window.
- * Support for Shared Libraries
- GDB can now debug programs and core files that use SunOS shared libraries.
- Symbols from a shared library cannot be referenced
- before the shared library has been linked with the program (this
- happens after you type ``run'' and before the function main() is entered).
- At any time after this linking (including when examining core files
- from dynamically linked programs), gdb reads the symbols from each
- shared library when you type the ``sharedlibrary'' command.
- It can be abbreviated ``share''.
- sharedlibrary REGEXP: Load shared object library symbols for files
- matching a unix regular expression. No argument
- indicates to load symbols for all shared libraries.
- info sharedlibrary: Status of loaded shared libraries.
- * Watchpoints
- A watchpoint stops execution of a program whenever the value of an
- expression changes. Checking for this slows down execution
- tremendously whenever you are in the scope of the expression, but is
- quite useful for catching tough ``bit-spreader'' or pointer misuse
- problems. Some machines such as the 386 have hardware for doing this
- more quickly, and future versions of gdb will use this hardware.
- watch EXP: Set a watchpoint (breakpoint) for an expression.
- info watchpoints: Information about your watchpoints.
- delete N: Deletes watchpoint number N (same as breakpoints).
- disable N: Temporarily turns off watchpoint number N (same as breakpoints).
- enable N: Re-enables watchpoint number N (same as breakpoints).
- * C++ multiple inheritance
- When used with a GCC version 2 compiler, GDB supports multiple inheritance
- for C++ programs.
- * C++ exception handling
- Gdb now supports limited C++ exception handling. Besides the existing
- ability to breakpoint on an exception handler, gdb can breakpoint on
- the raising of an exception (before the stack is peeled back to the
- handler's context).
- catch FOO: If there is a FOO exception handler in the dynamic scope,
- set a breakpoint to catch exceptions which may be raised there.
- Multiple exceptions (``catch foo bar baz'') may be caught.
- info catch: Lists all exceptions which may be caught in the
- current stack frame.
- * Minor command changes
- The command ``call func (arg, arg, ...)'' now acts like the print
- command, except it does not print or save a value if the function's result
- is void. This is similar to dbx usage.
- The ``up'' and ``down'' commands now always print the frame they end up
- at; ``up-silently'' and `down-silently'' can be used in scripts to change
- frames without printing.
- * New directory command
- 'dir' now adds directories to the FRONT of the source search path.
- The path starts off empty. Source files that contain debug information
- about the directory in which they were compiled can be found even
- with an empty path; Sun CC and GCC include this information. If GDB can't
- find your source file in the current directory, type "dir .".
- * Configuring GDB for compilation
- For normal use, type ``./configure host''. See README or gdb.texinfo
- for more details.
- GDB now handles cross debugging. If you are remotely debugging between
- two different machines, type ``./configure host -target=targ''.
- Host is the machine where GDB will run; targ is the machine
- where the program that you are debugging will run.
|