<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      20231302-邱之釗-gdb調試

      邱之釗同學,你好!

      今天我們來學習一個非常重要的開發工具——gdb調試器。作為未來要在國產化操作系統上工作的開發者,掌握調試技能對你特別關鍵。我注意到你基礎一般,沒關系,調試本身就是從不斷犯錯中學習的藝術,我會帶著你一步步掌握。

      我們先在openEuler系統上創建一個測試文件。打開終端,輸入:

      vim testgdb.c
      

      屏幕截圖 2025-09-25 141047

      然后輸入以下代碼(我特意設計了函數調用和循環結構來練習調試):

      #include <stdio.h>
      
      int calculate(int n) {
          int sum = 0;
          for(int i = 1; i <= n; i++) {
              sum += i;
          }
          return sum;
      }
      
      int main() {
          int result = calculate(5);
          printf("1+2+3+4+5 = %d
      ", result);
          
          for(int i = 0; i < 3; i++) {
              printf("循環次數: %d
      ", i);
          }
          
          return 0;
      }
      

      image

      編譯時記得加上 -g 參數,這樣gdb才能顯示調試信息:

      gcc -g testgdb.c -o testgdb
      

      現在開始調試之旅。首先啟動gdb:

      gdb ./testgdb
      

      你會看到gdb的提示符 (gdb),接下來我們逐個學習核心命令:

      1. help - 查看幫助
        輸入 help 可以看到所有命令分類,help breakpoints 專門查看斷點幫助

      2. run - 啟動程序
        輸入 run 程序會完整執行一遍。但我們現在要調試,所以需要先設置斷點

      3. break - 設置斷點(4種類型演示)

      break main          # 函數斷點:在main函數入口暫停
      break testgdb.c:10  # 行斷點:在源文件第10行暫停
      tbreak 15           # 臨時斷點:第15行暫停一次后自動刪除
      break 7 if i == 3   # 條件斷點:當變量i等于3時暫停
      
      1. continue - 繼續執行
        設置斷點后輸入 run,程序會在斷點處暫停。輸入 continue 會繼續執行到下一個斷點

      2. next 和 step - 單步執行

      next # 執行下一行代碼(不進入函數內部)
      step # 執行下一行代碼(會進入函數內部)
      6. until - 快速跳出循環
      當你在循環體內時,輸入 until 會直接執行完當前循環

      1. finish - 執行完當前函數
        在函數內部時,輸入 finish 會執行完當前函數并暫停在返回處

      2. print - 查看變量值

      print sum      # 查看sum變量的值
      print &result  # 查看result變量的地址
      
      1. display - 自動顯示變量
      display i      # 每次暫停時自動顯示i的值
      display sum    # 每次暫停時自動顯示sum的值
      

      現在讓我們實際操作一遍。在gdb中依次輸入:

      break main
      run
      next
      step
      display i
      display sum
      continue
      

      image

      記住調試的核心邏輯:設置斷點 → 運行 → 查看變量 → 單步跟蹤 → 發現問題。就像偵探破案一樣,在每個關鍵位置設置"監控點"(斷點),觀察變量的變化過程。

      你可能會問為什么需要這么多命令?因為調試不同場景需要不同工具:next 用于快速跳過已知正常的函數,step 用于深入可疑函數內部,until 幫我們避免在循環中一次次next。

      在實際開發中,90%的bug都是通過設置 strategic breakpoints(戰略斷點) 找到的。比如在國產化系統開發中,遇到硬件相關問題時,往往需要在關鍵接口函數設置斷點,然后查看參數傳遞是否正確。

      建議你今天按照這個流程練習3遍:1)編譯帶調試信息的程序 2)設置4種斷點 3)使用單步命令 4)觀察變量變化。動手實操是最好的學習方法,遇到問題隨時記錄下來,下次我們可以重點討論。
      以下是設置的四種斷點:
      條件斷點:
      image
      臨時斷點:
      image
      行斷點:
      image
      函數斷點:
      image

      作業提交要求 (1')
      拷貝出AI生成的所有內容,把你實踐編譯和測試過程截圖插入,AI生成內容不滿意,可以刷新一下,代碼可能不能直接使用,需要你做簡單修改
      (選做)推薦所有作業托管到 gitee或 github 上
      (必做)提交作業 markdown文檔,命名為“學號-姓名-作業題目.md”
      (必做)提交作業 markdown文檔轉成的 PDF 文件,命名為“學號-姓名-作業題目.pdf”

      posted @ 2025-09-25 16:54  20231302邱之釗  閱讀(14)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久99久国产精品66| 麻豆亚洲精品一区二区| 午夜毛片不卡免费观看视频| 好紧好滑好湿好爽免费视频| 亚洲精品日韩在线丰满| 久久亚洲欧美日本精品| 国产精品13页| 亚洲日本乱码熟妇色精品| 国产一级片内射在线视频| 国产色a在线观看| 亚洲免费网站观看视频| 熟女精品国产一区二区三区| 国产精品成人中文字幕| 亚洲国产精品久久久天堂麻豆宅男 | 国产成人理论在线视频观看| 久久久亚洲欧洲日产国码606| 欧美日韩人人模人人爽人人喊| 成人福利国产午夜AV免费不卡在线| 国产精品自在自线视频| 精品久久久久中文字幕日本| 国产福利深夜在线播放 | 国产精品人成视频免| 亚洲αⅴ无码乱码在线观看性色| 国产精品综合在线免费看| 又黄又爽又色的少妇毛片| 熟女国产精品一区二区三| 依依成人精品视频在线观看| 婷婷四房播播| 国产精品自拍自在线播放| 色噜噜狠狠色综合成人网| 精品无码三级在线观看视频| 日本视频高清一区二区三区| 色综合视频一区二区三区| 精品国产免费一区二区三区香蕉| 成人拍拍拍无遮挡免费视频| av色国产色拍| 中国熟妇毛多多裸交视频| 东京热人妻丝袜无码AV一二三区观| 蜜臀在线播放一区在线播放| 国产女主播喷水视频在线观看| 亚洲香蕉免费有线视频|