Linux/macOS 下編譯運行代碼及gdb編譯工具使用指南

Linux/macOS 下編譯運行代碼及gdb編譯工具使用指南

  • 終端編譯運行方法(以cpp爲例)

    • 用快捷鍵Ctrl+ Alt+ T打開終端, 使用cd命令定位到代碼所在文件夾。也可以直接在代碼所在文件夾中右鍵鼠標,然後選擇打開終端(open terminal)
    • 在終端中輸入編譯命令: g++ [代碼文件名] -0 [生成可執行文件名] -g -std=c++11
    • 在終端中輸入命令運行編譯出來的可執行文件: ./[可執行文件名] 例如要編譯運行位於路徑contestcode 下的名爲a.cpp的代碼:
      cd contesttode
      g++ a.cpp -o a -g -std=c++11
      (由於默認生成文件名爲a.out的可執行文件,使用-o參數後面街上文件名就表示指定生成的文件名,-g表示將要調試)
      在運行程序的過程時,可以在終端中使用快捷鍵Ctrl + C來提前終止程序的執行
  • 使用gdb工具調試程序的方法:

    • 使用上述編譯方法將.cpp文件編譯成可執行文件
    • 在終端中輸入命令 gdb[可執行文件名] 來進入gdb界面

      例如要調試代碼a.cpp,假設已經將它編譯成了可執行文件 a
      gdb a
      (注意、每次修改代碼後都需要重新編譯,才能用gdb調試新的代碼)

  • 進入gdb界面後就可以使用gdb的命令來調試程序,常用的gdb命令如下:

    • 運行代碼: r, 代碼會從頭開始運行直至代碼結束或是遇到第一個斷點
    • 在代碼的某一行設置斷點: b [行號]
    • 刪除斷點: del [斷點編號] 斷點從1開始編號,當一個斷點設置成功後gdb會在屏幕上給出它的編號
    • 繼續執行: c, 此時代碼會從停下的位置繼續執行,直到程序結束或是遇到下一 個斷點
    • 單步執行(跳過函數): n, 跳轉到下一行代碼而不進入函數內部
    • 單步執行(進入函數): s, 跳轉到下一行代碼,若當前行中有函數調用,則進入函數內部
    • 輸出某個變量的值: p [變量名],在屏幕上顯示出變量當前的值
    • 跟蹤某個變量的值: disp [變量名], 將變量添加到追蹤表中,之後代碼再執行時就會自
      動的將這些變量的值顯示在屏幕上
    • 顯示現在追蹤的所有變量的信息: disp
    • 解除輸出變量大小限制: set max-value -size unlimited, (例: 輸出大數組)
    • 刪除對某個變量的跟蹤 del dis [追蹤變量編號].編號從1開始,會在添加成功後顯示在屏幕上
    • 監視某個變量的變化: watch [變量名] 在該變量當前值發生變化的地方設置斷點,代碼
      開始運行後才能使用
    • 刪除對某個變量的監視: del [監視變量編號],編號規則同上
    • 顯示堆棧信息: bt, 在屏幕上輸出當前堆棧中的信息
    • 退出gdb界面: q
    • 無其他輸入,直接回車會執行上一條命令
    • 執行時,如果當前行開頭有(gdb) 字樣,說明系統正等待gdb命令,否則說明程序正在運行或者等待程序本身的輸入
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章