Forran第十四講GDB調(diào)試_第1頁(yè)
Forran第十四講GDB調(diào)試_第2頁(yè)
Forran第十四講GDB調(diào)試_第3頁(yè)
Forran第十四講GDB調(diào)試_第4頁(yè)
Forran第十四講GDB調(diào)試_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Fortran程序設(shè)計(jì)第十四講習(xí)題課與GDB調(diào)試復(fù)習(xí)第十三講內(nèi)容舊版本的Fortran特性格式:1-5列是行號(hào)第一列是C或者星號(hào),表示本行為注釋第六列如果不是空白或0,表示續(xù)行注釋有效語句位置續(xù)行舊版本

第一列用C或*從第7列到72列第6列非0為續(xù)行Fortran90!開始的行從第1-132列用&表示續(xù)行行號(hào)在1-5列每行程序的最前面DATA語句的使用 變量初始化: DATAa,b,c/1.0,2*2.0/ 數(shù)組初始化: REALa(2,2) DATAa/1.,2.,3.,4./!按列優(yōu)先舊的PARAMETER語句:INTEGERSIZEPARAMETER(SIZE=1000)

COMMON語句用BLOCKDATA初始化COMMON塊中的數(shù)據(jù)BLOCKDATAinitialINTEGERvar1,var2COMMON/mydata/var1,var2DATAvar1,var2/1,2/ENDBLOCKDATA四條不必要的子程序特性另一子程序的返回點(diǎn)另一入口點(diǎn)語句函數(shù)將內(nèi)置函數(shù)作為參數(shù)傳遞語句函數(shù)PAUSESTOPENDPAUSE語句用于暫停程序的執(zhí)行已經(jīng)在Fortran95中被刪掉STOP語句用于終止程序的執(zhí)行可以在STOP后面加參數(shù),形式如下:STOPstop_value例如:STOP‘Normalcompletion’當(dāng)終止時(shí),會(huì)顯示這個(gè)字符串END語句在Fortran90之前,所有的程序單元都用END結(jié)束Fortran90以后,標(biāo)準(zhǔn)是用形如:ENDPROGRAMENDMODULE之類的語句當(dāng)然,也可以單用END但是,內(nèi)部過程和模塊過程必須用ENDSUBROUTINE和ENDFUNCTION算術(shù)IF語句GOTO語句計(jì)算GOTO語句賦值GOTO語句舊的DO循環(huán)與CONTINUE多文件編譯14.1迷宮的解法一設(shè)置輔助數(shù)組的解法:設(shè)置三個(gè)和maze數(shù)組一樣結(jié)構(gòu)的數(shù)組:Step_maze用于保存當(dāng)前塊在路徑中的步數(shù)Leave_direction用于保存在路徑中離開當(dāng)前塊的方向,0表示東面,1,2,3分別表示南西北From_direction表示從哪個(gè)方向到達(dá)當(dāng)前塊過程列表:Createmaze(maze,n)創(chuàng)建一個(gè)隨機(jī)的二維方陣maze(n,n),方陣的元素要么是0要么是1,1表示迷宮的通道,0表示迷宮的墻Init_random_seed()初始化隨機(jī)數(shù)種子Solve(maze,n)在迷宮maze(n,n)中找到一條從maze(1,1)到maze(n,n)的路徑,如果找不到,輸出提示信息,找到就輸出路徑步驟get_new_position(n,i,j,direction)在數(shù)組direction中取得i,j的方向,并計(jì)算這個(gè)方向所對(duì)應(yīng)的新的i,j值check_direction(maze,n,i,j,direction,step_maze)檢查迷宮的下一個(gè)方向能否走的通14.2迷宮的解法二在這個(gè)算法中,不設(shè)置輔助數(shù)組用自定義的數(shù)據(jù)結(jié)構(gòu)來保存在每個(gè)塊上面的步數(shù)、方向等信息TYPE::maze_elementINTEGER::roadINTEGER::leave_directionINTEGER::from_directionINTEGER::stepENDTYPEmaze_element14.3迷宮的遞歸解法見代碼14.4Fortran程序的調(diào)試程序的調(diào)試 程序沒有語法錯(cuò)誤,但是運(yùn)行出錯(cuò) 程序運(yùn)行結(jié)果和預(yù)期不符 程序運(yùn)行結(jié)果的精度達(dá)不到要求調(diào)試的方法:在程序中增加調(diào)試語句,來輸出一些中間結(jié)果用調(diào)試軟件圖形化的調(diào)試軟件命令行的調(diào)試軟件14.5GDB的使用如果需要調(diào)試程序,編譯的時(shí)候添加-g選項(xiàng)gfortran–gexample.f90–oexample生成的example.exe文件就是可執(zhí)行文件此時(shí),可以輸入gdbexample進(jìn)入調(diào)試程序14.6GDB使用概述GDB的命令可以輸入help查看輸入命令時(shí),可以不用輸入完整的命令,只需要前面幾個(gè)字母,當(dāng)然,這前面幾個(gè)字母應(yīng)該唯一區(qū)分了該命令輸入一個(gè)或多個(gè)字母后,連按兩次TAB鍵,可以列出所有以該字母打頭的命令14帝.7在GD揉B中運(yùn)監(jiān)行程霞序rru腫n可以退在gd困b中運(yùn)害行程殊序14賭.8暫停計(jì)與恢聲復(fù)程賞序運(yùn)驕行調(diào)試塌程序曠中,社暫停炮程序暑運(yùn)行餡是必惑須的藥,GD賀B可以丑方便菌地暫恒停程聚序的攜運(yùn)行攝。你敘可以頑設(shè)置趣程序壓的在伯哪行適停住山,在討什么論條件稠下停育住,音在收虧到什捏么信閣號(hào)時(shí)軍停往左等等勇。以故便于隸你查嚇看運(yùn)即行時(shí)沈的變叉量,擠以及福運(yùn)行套時(shí)的庸流程郊。當(dāng)進(jìn)胖程被gd女b停住置時(shí),改你可漏以使充用in暢fo數(shù)p當(dāng)ro耐gr之a(chǎn)m來查暖看程未序的衣是否磚在運(yùn)磁行,兄進(jìn)程坡號(hào),黃被暫炭停的鍵原因拾。在gd珠b中,晉我們起可以兄有以琴下幾怎種暫戚停方丙式:湯斷點(diǎn)待(Br橡ea叔kP究oi燒nt)、鞭觀察投點(diǎn)(Wa劉tc齊hP成oi滔nt)、宗捕捉奸點(diǎn)(Ca喜tc伐hP袋oi夜nt)、邊信號(hào)怨(Si壟gn導(dǎo)al幕s)、暗線程泊停止膨(Th扁re屢ad園S另to津ps)。摘如果遍要恢屋復(fù)程諒序運(yùn)畫行,抓可以議使用c或是co控nt弓in后ue命令毒。14而.8蕉.1設(shè)置綠斷點(diǎn)br泄ea怨kbr株ea牛k鬼<s減ub錘ro或ut控in餓e>br懶ea喚k媽<li船ne罵nu描m>br宜ea叨k度..源.康if鐘<證co詳nd陣it刃io艇n>..間.可以恒是上吃述的鵲參數(shù)銀,co恩nd兇it敞io艇n表示尖條件恨,在涂條件斯成立釀時(shí)停墾住。折比如倆在循環(huán)卵體中,孔可以怨設(shè)置br蹦ea荷k采ifi=1誓00婆,表示掛當(dāng)i為10鏈0時(shí)停億住程訓(xùn)序。查看消斷點(diǎn)涼:in繪fo趙b技re描ak煎po堡in燥ts蠶[殺n]in初fo傍b邁re縣ak真[角n]14膜.8卵.2設(shè)置稍觀察但點(diǎn)觀察協(xié)點(diǎn)一動(dòng)般來愈觀察跑某個(gè)儀表達(dá)賤式(科變量倆也是誓一種廊表達(dá)搜式)堡的值購(gòu)是否神有變察化了閘,如翠果有昂變化肅,馬群上停太住程足序。訴我們沃有下糊面的珠幾種褲方法柏來設(shè)漆置觀登察點(diǎn)罷:wa足tc斬h援<ex樣pr>為表尋達(dá)式盒(變辜量)ex聰pr設(shè)置鈴一個(gè)冬觀察饑點(diǎn)。李一量今表達(dá)搭式值專有變?cè)够瘯r(shí)徑,馬菌上停直住程來序。rw靠at球ch<ex閃pr>當(dāng)表欲達(dá)式闖(變俊量)ex欠pr被讀找時(shí),益停住懼程序庸。aw感at跳ch<ex窮pr>當(dāng)表妻達(dá)式揭(變術(shù)量)鴉的值仁被讀托或被傳寫時(shí)茫,停摟住程解序。in按fowa碧tc鑄hp其oi蜓nt套s列出摸當(dāng)前嬸所設(shè)稍置了濟(jì)的所給有觀教察點(diǎn)是。14告.8蘿.3維護(hù)層停止期點(diǎn)在GD臨B中,館如果未你覺容得已稻定義或好的輕停止柔點(diǎn)沒確有用想了,碑你可城以使皆用de員le緒te伍、c殲le該ar帥、d撒is售ab江le雷、e亮na擦bl頑e這幾擺個(gè)命蚊令來堪進(jìn)行透維護(hù)寫。cl錦ea馳r清除芒所有嘆的已框定義際的停竄止點(diǎn)澡。cl焰ea并r拒<f鑒un代ct原io頂n>清除紅所有裳設(shè)置冰在函返數(shù)上削的停杯止點(diǎn)銀。cl什ea委r責(zé)<li績(jī)ne易nu總m>清除疼所有炭設(shè)置龜在指佳定行冠上的朗停止陽點(diǎn)。de蘭le菠te旬[剃br剪ea廢kp塌oi飼nt演s]贊[井ra吉ng傷e.巖..蛙]刪除察指定脫的斷討點(diǎn),br板e(cuò)a隔kp擺oi矮nt爬s為斷壟點(diǎn)號(hào)婦。如票果不顛指定姿斷點(diǎn)惑號(hào),粥則表織示刪意除所結(jié)有的兇斷點(diǎn)蜘。ra御ng趴e表示限斷點(diǎn)困號(hào)的卸范圍房誠(chéng)(如墨:3-牧7)。艦其簡(jiǎn)躍寫命叔令為d。比刪紙除更燈好的簽一種忠方法沈是di蔥sa扔bl辭e停止內(nèi)點(diǎn),di慘sa苦bl政e了的印停止假點(diǎn),GD過B不會(huì)個(gè)刪除芒,當(dāng)跪你還辨需要用時(shí),en拘ab淘le即可妹,就非好像切回收塘站一蒼樣。di格sa旅bl買e牲[b龍re懼ak梳po撒in檔ts漫]壞[r娃an漸ge農(nóng)..膝.]di尾sa權(quán)bl晴e所指逼定的福停止顧點(diǎn),br共ea柴kp駁oi瞞nt兇s為停盒止點(diǎn)類號(hào)。守如果賊什么臺(tái)都不覽指定座,表趨示di夾sa計(jì)bl定e所有驢的停著止點(diǎn)掘。簡(jiǎn)框?qū)懨溋钍莇i唯s.en途ab墓le派[標(biāo)br苗ea磚kp流oi桃nt翼s]燭[歐ra差ng訓(xùn)e.扎..漿]en帖ab抖le所指域定的奇停止錢點(diǎn),br泰ea菌kp誦oi胖nt跑s為停蹤蝶止點(diǎn)勿號(hào)。en沉ab圣le裹[談br弱ea受kp償oi斷nt老s]患o(jì)勿nc撲e做ra迫ng芝e.寺..en滑ab章le所指劍定的鈔停止嘴點(diǎn)一重次,銀當(dāng)程滋序停氧止后捕,該庭停止費(fèi)點(diǎn)馬錢上被GD喂B自動(dòng)di竄sa謊bl例e。en叨ab殘le持[搬br亭ea鵲kp圾oi鎖nt易s]割d灰el江et淘e蘇ra輝ng廣e.膽..en嗽ab曉le所指更定的喝停止勒點(diǎn)一療次,宅當(dāng)程場(chǎng)序停喊止后役,該霞停止政點(diǎn)馬翅上被GD州B自動(dòng)皺刪除黎。14范.8繭.4為停諸止點(diǎn)貍設(shè)定鈔運(yùn)行濕命令使用GD爽B提供除的co裁mm刷an有d命令辮來設(shè)糕置停胳止點(diǎn)蜓的運(yùn)妹行命拌令。也就舟是說損,當(dāng)悟運(yùn)行祥的程冤序在膏被停帽止住盡時(shí),恐我們弟可以棚讓其午自動(dòng)掏運(yùn)行漸一些耀別的駕命令悼。co洗mm解an畏ds婚[bn夜um]..隱.追co伐mm縮慧an塵d-明li責(zé)st及.友..en昏d為斷碗點(diǎn)號(hào)bn原um指寫宋一個(gè)夠命令無列表示。當(dāng)孔程序賺被該惕斷點(diǎn)少停住獵時(shí),gd緩b會(huì)依聾次運(yùn)倒行命靠令列復(fù)表中很的命旋令。例如萄:br宰ea像kfo淋oif杏x禾>0co睜mm誦an鎮(zhèn)dspr拒in且tf"x團(tuán)i管s鎮(zhèn)%d濾/n"院,xco跳nt躺in武ueen流d斷點(diǎn)明設(shè)置踩在函扣數(shù)fo哨o中,帆斷點(diǎn)塊條件神是x>妥0,如額果程析序被哭斷住妖后,射也就速是,撒一旦x的值親在fo劫o函數(shù)晃中大蹤蝶于0,GD哲B會(huì)自幻玉動(dòng)打往印出x的值高,并伍繼續(xù)黨運(yùn)行凝程序灶。如果指你要箏清除之?dāng)帱c(diǎn)介上的陷命令態(tài)序列冬,那息么只尺要簡(jiǎn)悅單的的執(zhí)行繞一下co臉mm炸an鎖ds命令污,并類直接忠在打博個(gè)en框d就行產(chǎn)了。14蝕.8塌.5恢復(fù)默程序布運(yùn)行僵和單測(cè)步調(diào)訴試當(dāng)程父序被墾停住捷了,油你可剝以用co鋼nt禮in岔ue命令拆恢復(fù)尼程序飼的運(yùn)滋行直嫩到程放序結(jié)源束,聲或下獵一個(gè)巖斷點(diǎn)證到來襪。也災(zāi)可以昆使用st蕩ep或ne赴xt命令茫單步魚跟蹤前程序莊。co搬nt蛇in轎ue木[行ig朝no殿re躍-c延ou雨nt月]c園[i字gn培or致e-捧co饅un年t]fg[i聰gn禿or帽e-籮co彩un爆t]恢復(fù)便程序惱運(yùn)行變,直鏈到程陷序結(jié)木束,蜓或是經(jīng)下一雕個(gè)斷刷點(diǎn)到努來。ig墾no嘩re齒-c綁ou玻nt表示震忽略下其后嬌的斷出點(diǎn)次給數(shù)。co顏nt栽in沃ue采,c針,f飄g三個(gè)月命令管都是附一樣愛的意督思。st匪ep怒<叨co恒un招t>單步匆跟蹤赴,如要果有躺函數(shù)英調(diào)用篇,他恭會(huì)進(jìn)法入該撤函數(shù)熔。進(jìn)紫入函花數(shù)的流前提穴是,發(fā)此函霧數(shù)被稍編譯箱有de痕bu鹿g信息松。很擁像VC等工臨具中準(zhǔn)的st筒ep村i窯n。后掛面可因以加co裳un趁t也可叮以不瘡加,巨不加臺(tái)表示邊一條良條地銜執(zhí)行氣,加咸表示食執(zhí)行具后面模的co像un壩t條指少令,謀然后斧再停項(xiàng)住。ne雕xt尤<脂co竭un蠻t>同樣飼單步心跟蹤面,如悔果有萬函數(shù)禮調(diào)用扒,他養(yǎng)不會(huì)租進(jìn)入削該函置數(shù)。乖很像VC等工辰具中蜂的st陜ep碌o讀ve田r。后面蠻可以狐加co嗓un法t也可凡以不蜂加,蘋不加幅表示紀(jì)一條勒條地遮執(zhí)行圓,加貨表示拐?qǐng)?zhí)行漆后面終的co美un時(shí)t條指污令,秩然后訂再停特住。un全ti楊l或u當(dāng)你狂厭倦涌了在袍一個(gè)擔(dān)循環(huán)遞體內(nèi)言單步節(jié)跟蹤憑時(shí),績(jī)這個(gè)侄命令葉可以抱運(yùn)行裂程序勾直到乏退出懂循環(huán)米體。14彩.9查看骨棧信腥息查看裂棧信很息——外——賣—當(dāng)程凝序被獵停住凱了,綠你需織要做狂的第貞一件瀉事就霜是查殼看程窩序是饅在哪忠里停落住的針。當(dāng)凈你的怪程序意調(diào)用返了一哄個(gè)函饑數(shù),遲函數(shù)串的地殃址,廳函數(shù)流參數(shù)寨,函諷數(shù)內(nèi)中的局努部變首量都憶會(huì)被豆壓入存“棧梢”(St缸ac宅k)中兩。你挖可以柄用GD統(tǒng)B命令平來查演看當(dāng)施前的僵棧中梁的信斥息。查看節(jié)函數(shù)斷調(diào)用閉棧信恢息的GD略B命令判:ba澇ck智tr伍ac庭ebt14僅.1圈0顯示筍源代億碼GD片B可以惜打印滅出所宏調(diào)試緒程序吼的源遷代碼東,當(dāng)粘然,踩在程源序編醋譯時(shí)景一定噴要加縣上-g的參玩數(shù),賓把源廚程序戰(zhàn)信息大編譯芽到執(zhí)孕行文槳件中貍。不腥然就踐看不嫩到源溫程序場(chǎng)了。另當(dāng)程它序停畏下來榜以后菌,GD也B會(huì)報(bào)梳告程賞序停緩在了育那個(gè)距文件天的第定幾行肢上。箱你可測(cè)以用li部st命令票來打栗印程僚序的盜源代嫂碼。li鄭st睜<li銀ne丸nu留m>顯示款程序逆第li豎ne真nu嗚m行的邊周圍只的源抵程序碧。li室st杠<潔fu而nc榜ti鏟on排>顯示籃函數(shù)銀名為fu豪nc貴ti嶼on的函港數(shù)的哲源程哭序。li困st顯示劈燕當(dāng)前甚行后報(bào)面的夢(mèng)源程錦序。li含st匪-顯示鑰當(dāng)前晉行前崇面的爬源程方序。14往.1效1查看抓運(yùn)行井時(shí)數(shù)蒙據(jù)在你紅調(diào)試戚程序劃時(shí),判當(dāng)程氏序被飛停住灣時(shí),腎你可埋以使讓用pr在in娘t命令思(簡(jiǎn)郵寫命狠令為p),樸或是林同義旋命令in千sp裂ec站t來查胞看當(dāng)殲前程連序的慕運(yùn)行復(fù)數(shù)據(jù)滲。pr辦in該t命令依的格是式是箏:pr砍in六t刮<ex詞pr>pr象in母t概/<皇f>談<ex宏pr><ex客pr>是表壓達(dá)式蛙,是趣你所田調(diào)試微的程它序的高語言著的表澤達(dá)式膨(GD肌B可以瓜調(diào)試穗多種栗編程賢語言緞),<f酒>是輸輔出的肯格式后,比團(tuán)如,枝如果偶要把懶表達(dá)頃式按16進(jìn)制竹的格削式輸真出,豬那么誤就是/x。一般云來說漠,GD兄B會(huì)根致?lián)冐Q量的蘇類型醉輸出藍(lán)變量覆的值懼。但帖你也兵可以易自定許義GD笑B的輸機(jī)出的掩格式陡。例努如,深你想比輸出帆一個(gè)麻整數(shù)遮的十翁六進(jìn)佩制,譯或是側(cè)二進(jìn)聽制來職查看盈這個(gè)諷整型貍變量盾的中集的位否的情史況。竄要做劫到這爪樣,勒你可繪以使奪用GD之B的數(shù)侍據(jù)顯贈(zèng)示格頃式:x按十終六進(jìn)櫻制格程式顯櫻示變卸量。d按十勉進(jìn)制蕩格式弟顯示伸變量魚。u按十尸六進(jìn)島制格緞式顯五示無挪符號(hào)枝整型聚。o按八羊進(jìn)制靜格式管顯示災(zāi)變量河。t按二經(jīng)進(jìn)制卡格式對(duì)顯示師變量去。a按十衡六進(jìn)黃制格余式顯森示變?nèi)毫?。c按字彼符格騙式顯鑄示變亡量。f按浮疫點(diǎn)數(shù)壩格式炸顯示螞變量圾。14昨.1仗1.奔1自動(dòng)低顯示你可擊以設(shè)蒜置一飲些自續(xù)動(dòng)顯使示的徑變量依,當(dāng)塘程序泄停住屢時(shí),療或是襖在你駝單步晃跟蹤冰時(shí),淡這些錦變量翼會(huì)自做動(dòng)顯首示。倆相關(guān)感的GD壁B命令翠

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論