資源描述:
《Fortran第十四講-GDB調(diào)試.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Fortran程序設(shè)計第十四講習題課與GDB調(diào)試復習第十三講內(nèi)容舊版本的Fortran特性格式:1-5列是行號第一列是C或者星號,表示本行為注釋第六列如果不是空白或0,表示續(xù)行注釋有效語句位置續(xù)行舊版本第一列用C或*從第7列到72列第6列非0為續(xù)行Fortran90!開始的行從第1-132列用&表示續(xù)行行號在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)C
2、OMMON語句用BLOCKDATA初始化COMMON塊中的數(shù)據(jù)BLOCKDATAinitialINTEGERvar1,var2COMMON/mydata/var1,var2DATAvar1,var2/1,2/ENDBLOCKDATA四條不必要的子程序特性另一子程序的返回點另一入口點語句函數(shù)將內(nèi)置函數(shù)作為參數(shù)傳遞語句函數(shù)PAUSESTOPENDPAUSE語句用于暫停程序的執(zhí)行已經(jīng)在Fortran95中被刪掉STOP語句用于終止程序的執(zhí)行可以在STOP后面加參數(shù),形式如下:STOPstop_value例如:STOP‘Normalcompletion’當終止時,會顯示這個字
3、符串END語句在Fortran90之前,所有的程序單元都用END結(jié)束Fortran90以后,標準是用形如:ENDPROGRAMENDMODULE之類的語句當然,也可以單用END但是,內(nèi)部過程和模塊過程必須用ENDSUBROUTINE和ENDFUNCTION算術(shù)IF語句GOTO語句計算GOTO語句賦值GOTO語句舊的DO循環(huán)與CONTINUE多文件編譯14.1迷宮的解法一設(shè)置輔助數(shù)組的解法:設(shè)置三個和maze數(shù)組一樣結(jié)構(gòu)的數(shù)組:Step_maze用于保存當前塊在路徑中的步數(shù)Leave_direction用于保存在路徑中離開當前塊的方向,0表示東面,1,2,3分別表示南西
4、北From_direction表示從哪個方向到達當前塊過程列表:Createmaze(maze,n)創(chuàng)建一個隨機的二維方陣maze(n,n),方陣的元素要么是0要么是1,1表示迷宮的通道,0表示迷宮的墻Init_random_seed()初始化隨機數(shù)種子Solve(maze,n)在迷宮maze(n,n)中找到一條從maze(1,1)到maze(n,n)的路徑,如果找不到,輸出提示信息,找到就輸出路徑步驟get_new_position(n,i,j,direction)在數(shù)組direction中取得i,j的方向,并計算這個方向所對應(yīng)的新的i,j值check_direct
5、ion(maze,n,i,j,direction,step_maze)檢查迷宮的下一個方向能否走的通14.2迷宮的解法二在這個算法中,不設(shè)置輔助數(shù)組用自定義的數(shù)據(jù)結(jié)構(gòu)來保存在每個塊上面的步數(shù)、方向等信息TYPE::maze_elementINTEGER::roadINTEGER::leave_directionINTEGER::from_directionINTEGER::stepENDTYPEmaze_element14.3迷宮的遞歸解法見代碼14.4Fortran程序的調(diào)試程序的調(diào)試程序沒有語法錯誤,但是運行出錯程序運行結(jié)果和預期不符程序運行結(jié)果的精度達不到要求調(diào)
6、試的方法:在程序中增加調(diào)試語句,來輸出一些中間結(jié)果用調(diào)試軟件圖形化的調(diào)試軟件命令行的調(diào)試軟件14.5GDB的使用如果需要調(diào)試程序,編譯的時候添加-g選項gfortran–gexample.f90–oexample生成的example.exe文件就是可執(zhí)行文件此時,可以輸入gdbexample進入調(diào)試程序14.6GDB使用概述GDB的命令可以輸入help查看輸入命令時,可以不用輸入完整的命令,只需要前面幾個字母,當然,這前面幾個字母應(yīng)該唯一區(qū)分了該命令輸入一個或多個字母后,連按兩次TAB鍵,可以列出所有以該字母打頭的命令14.7在GDB中運行程序rrun可以在gdb中運
7、行程序14.8暫停與恢復程序運行調(diào)試程序中,暫停程序運行是必須的,GDB可以方便地暫停程序的運行。你可以設(shè)置程序的在哪行停住,在什么條件下停住,在收到什么信號時停往等等。以便于你查看運行時的變量,以及運行時的流程。當進程被gdb停住時,你可以使用infoprogram來查看程序的是否在運行,進程號,被暫停的原因。在gdb中,我們可以有以下幾種暫停方式:斷點(BreakPoint)、觀察點(WatchPoint)、捕捉點(CatchPoint)、信號(Signals)、線程停止(ThreadStops)。如果要恢復程序運行,可以使用c或是continu