802.16 IP Telephony Lab會議紀錄 時間:96年3月19日19:00 地點:暨南大學科四館418教室 主講人:陳柏州 紀錄:王鐘逸 出席者:吳坤熹老師、林穎舜、王彥翔、吳菖育、張文萍、張兢真、王鐘逸、陳柏州、吳瑞益 會議主題:GDB 會議內容: 1.Introduction 2.啟動GDB 3.GDB命令 4.中斷點 5.Print指令 6.其他指令 7.命令歷史 8.縮寫整理 9.Reference 問題討論: Q1. GDB是非常重要的工具,以後請不要再用printf來debug了! (老師建議) 工欲善其事,必先利其器。 Q2. 投影片上百分比的符號代表什麼意思? (老師提問) 輸入命令的意思。 (柏州回答) Q3. C語言正常結束會有什麼結果? (老師提問) 沒有訊息。 (兢真回答) 關鍵在於return,於C語言中,return 0為正常結束。 Q4. 在UNIX下舉例一個不成功的指令 (老師提問) more 111 (柏州回答) 可以下 $?,回傳前一個指令的return值。 Q5. set args 輸入N個參數,後面是否用空格分開? 是的。 (柏州回答) Q6. argc和args分別代表什麼意思? (老師提問) argc代表參數個數,args代表值。 (瑞益) Q7. arg 111 222 333 ,請問argc為4的原因? (老師提問) 連同執行檔案,共4個。 (老師講解) Q8. ln的指令目的? (老師提問) 新增某(好比aaa)檔案,link到另一檔案(好比test4)。 (兢真回答) aaa的內容,是指引到test4。 (菖育回答) ln是不同的檔案,同一指定到同一磁碟位置上。 (老師講解) Q9. 如何找到打過的指令?(好比說ls -li test*.c) (老師提問) 先打l,再按上下鍵搜尋。 (老師講解) Q10.是否可以知道gzip的全部link? (彥翔提問) ls -li |grep 磁碟位置 (柏州回答) Q11.投影片順序應該先講中斷點的相關主題。 (老師建議) Q12.為何 Old Value = 1,New Value = 0? (鐘逸提問) 那是 if i < 2 的判斷值,所以不是0就是1。 (老師講解) Q13.使用GDB來debug容易多了,使用watch可以監看某一變數被修改時就發出警示。 (老師講解) Q14.目前中斷點如何查找? (鐘逸提問) 使用where指令。 (柏州回答) Q15.GDB中斷點設定後,會停在第一個可執行的動作前;但是單純宣告卻不會(好比說int a;),可是如果宣告並且給予數值則會停止(好比說int a=5;)。 (老師講解) Q16.print fun_name(),在說明這個列印出函式值的例子中,應該以會回傳數值的範例為佳。 (老師建議) Q17.gdb內可以打 shell tsch,就可以新開shell;另外打exit則可以回到gdb。 (老師講解) 待追蹤事項: 1.關於print a@n,陣列的輸出方式。 int *i,j; (柏州回答) i=malloc (sizeof(int)*5); for (j=0;j<5;j++) *(i+j)=j*2; 以這段程式來看,如果我們使用print i 只能印出i[0]的位址, 因此使用print i@5時,只能印出i[0~5]的位址,如果要印出值的話 使用print *i@5就可以印出數值了. 臨時動議: 散會: 結束時間:21:30