1. 程式人生 > 實用技巧 >PA環境記錄

PA環境記錄

實驗環境

  • 虛擬機器 / 雲伺服器

  • vscode remote-ssh

相關資源:

程式碼倉庫:參考http://archeng.top/pa/0.6.html

實驗文件: 參考http://archeng.top/pa

完成後的除錯環境大概這樣,和除錯本地檔案的步驟和方法基本一致

大概有以下步驟

  • 安裝虛擬機器環境/雲伺服器,centos7或者其他均可

  • 虛擬機器上安裝好ssh,安裝方式自己搜,安裝相關工具鏈,包括gdb/cgdb,gcc,make~

  • 本地vscode安裝好remote ssh 外掛,連上虛擬機器,在本地vscode能寫程式 算成功

除錯環境

除錯方式可以有這兩種

  • cgdb / gdb中除錯(有門檻)

  • Vscode 介面除錯(推薦)

主要記錄一下vscode的配置方式

  • 按照實驗文件完成首次編譯和執行,中間可能會對makefile做一定修改,問題太雜不記錄

  • 在完成首次執行以後可以配置以下的配置檔案

    • 在專案根目錄下建立 .vscode資料夾,資料夾下包括以下兩個檔案

      tasks.json

      {
          // See https://go.microsoft.com/fwlink/?LinkId=733558
          // for the documentation about the tasks.json format
          "version": "2.0.0",
          "tasks": [
              {
                  "label": "make nemu",
                  "type": "shell",
                  "command": "cd nemu && make app",
              }
          ]
      }
      

      lanuch.json

      {
          // Use IntelliSense to learn about possible attributes.
          // Hover to view descriptions of existing attributes.
          // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
          "version": "0.2.0",
          "configurations": [
              {
                  "name": "gcc - 生成和除錯活動檔案",
                  "type": "cppdbg",
                  "request": "launch",
                  "program": "/home/zhuzhicheng/project/PA/ics2019/nemu/build/mips32-nemu",
                  "args": [
                      "-l","/home/zhuzhicheng/project/PA/ics2019/nemu/build/nemu-log.txt",
                      "-d","/home/zhuzhicheng/project/PA/ics2019/nemu/tools/qemu-diff/build/mips32-qemu-so"],
                  "stopAtEntry": true,
                  "cwd": "${workspaceFolder}",
                  "environment": [],
                  "externalConsole": false,
                  "MIMode": "gdb",
                  "setupCommands": [
                      {
                          "description": "為 gdb 啟用整齊列印",
                          "text": "-enable-pretty-printing",
                          "ignoreFailures": true
                      }
                  ],
                  "preLaunchTask": "make nemu",
                  "miDebuggerPath": "/usr/bin/gdb"
              }
          ]
      }
      

      launch.json中 program 和 args 項 的目錄 /home/zhuzhicheng/project/PA/ 需要替換成自己的程式碼倉庫目錄

      -l 引數 後跟的是日誌路徑

      -d 引數 後跟的是nemu執行時載入程式的路徑

      這裡的引數 和 makefile 中 make run 引數 保持一致即可

  • 後續即可開啟正常除錯

可能碰到的一些問題:

  • 初始化相關環境變數,根目錄init.sh註釋掉第十行return,第13-15行 ,後執行 bash init.sh ,如果使用的不是預設shell,需要更改20-21 行
  • 設定$ISA環境變數
  • nemu/makefile 中
    • 第33行:FLAGS += -O0 -g -MMD -Wall -ggdb3 -std=c99 $(INCLUDES) -D__ISA__=$(ISA) -fomit-frame-pointer # -mmanual-endbr -fcf-protection=none #-Werror 禁止編譯器優化,除錯時使用
    • 第71行:@$(LD) -O0 -rdynamic $(SO_LDLAGS) -o $@ $^ -lSDL2 -lreadline -ldl
    • 註釋掉第25行關閉自動新增commit歷史
    • ···