4/9(一)Visual Studio Code - 偵錯配接器處理序已意外終止問題(Debug adapter process has terminated unexpectedly solution on Windows 10)

        最近在使用 Visual Studio Code (以下簡稱 vscode)時,出現了「偵錯配接器處理序已意外終止」(英文關鍵字:Debug adapter process has terminated unexpectedly),在解決的過程中發現沒有看什麼公開的中文資料,所以整理一下分享給大家,希望可以或多或少有幫助。

        故事是這樣的,前天我剛打完 code,興高采烈地準備要偵錯的時候,突然出現了以下的訊息,殺得我一個措手不及:


        直接一個嚇到啊,明明昨天使用還好好的,而且對於大部分使用者來說,並無自行設定對應的輸出 log 檔來查看錯誤訊息,這個錯誤訊息也只有關閉的按鈕可以選擇,對使用者不太友善啊(這部分過於 expert friendly)。

        後來稍微摸索一下(Github - "Debug adapter process has terminated unexpectedly" issues ),發現大部分的開發人員遇到狀況,主要可分兩種原因(一)vscode 更新至 1.22.1 版本時出現官方 bug;(二)更新後與原先的擴充套件產生衝突而導致。

        基於以上兩點,我一開始先是刪除目前的最新版本,隨後立即安裝舊版(可以進入這個網頁選擇自己適合的版本),因為是更新後才出問題,所以我便先安裝前一版本,結果還是出現以上的錯誤訊息,不過我建議在日後如果發生了更新才出錯的狀況,這種做法在大部分的情況下還算不錯有效的。

第一個方法失敗後,基本上就開始找第二種狀況的解法,花了一些時間,找到了這篇,裡面有位開發者 Don Jayamanne (這位 Developer 在 vscode 中,有貢獻過一個算是很受歡迎的擴充套件[1])提供了目前算是可以解決的方法,所以接下來就以我實際的解決流程依步驟來示範一次:

STEP 1:
        首先,根據上述的回應,我們可以知道要先到存放 extensions,也就是擴充套件的存放位置,這裡有兩種方法(一)開啟 vscode,按下「Ctrl + Shift + P」後,輸入「Extensions: Open Extensions Folder」,即可進入存放資料夾,操作畫面如下:


        又或者可以依照這個網頁最下方所指引的,首先按下「Windows 標誌鍵 + R」,開啟執行對話方塊後,將「%USERPROFILE%\.vscode\extensions」路徑複製並貼上,亦可達到同等效果,操作畫面如下:


        而不管使用上述任一種方式,最後都會成功來到這個資料夾位置,這個位置就是用來存放 vscode 所有安裝過的擴充套件:



STEP 2:
        刪爆,沒錯就是全部刪光,將裡面所有的檔案刪光,不過要自己記得需要那些套件,不然以後要用還要再找一下,這裡我會建議先截圖下來再刪除。
         
         一但刪光後,重新開啟你的 vscode,這裡 vscode 的版本就沒有限制了,所以我在刪光 extensions 後,就把最新版本的 vscode 安裝上去了;接著把需要的擴充套件再次安裝,基本上到這個步驟,便可以像以往一樣,順利地使用偵錯工具了。


補充:
        不知道大家有沒有這個問題,就是在做完以上的步驟後,你可能會出現,「明明是使用偵錯工具,輸出結果卻出現在整合終端機上(integrated terminal)」,這讓我很不習慣,於是就要自己動手調整啦,先聲明一下,以下的調整方式跟結果,完全就是以我個人的習慣來調整,可能不是最標準的什麼「是程式設計師都會用的 X 種方法」下去改的,所以喜歡就用用,不喜歡或是有甚麼更好的意見也在可以下方留言提供。

        由於我使用 vscode,基本上都用來開發 python 或是 web 端的程式,其中又以 python 為大宗,所以我就想,把預設的偵錯工具設定成針對 python,要開發其他語言時,再加入自己設定 launch.json 進行偵錯。一般來說,在每個 vscode 的專案中,都會由一個 .vscode 資料夾來管理偵錯的設定檔 launch.json。


        但是若每次都要重新設定自己想要的格式,基本上會很花時間,所以我就在 settings.json(按下左下角按鈕,點選「設定」,見下圖)中加入了以下修改:


        修改內容如下圖中所示(一張圖截不完,分兩張;注意不要漏打了 [] 及 {},不然 json[2]  的格式會出現錯誤):



        其中有幾個比較關鍵的參數:1. "stopOnEntry": true 表示在執行程式前,設定一個中斷點,若是設定為 false,則會在偵錯工具執行時,直接執行完畢;2. "console": "none" 表示結果在偵錯主控台顯示;"console": "integratedTerminal"  表示結果在整合終端機顯示;"console": "externalTerminal" 表示結果在外部終端機顯示(此處可參考這篇這篇還有這篇調整)。如此一來,每次要開始偵錯時,便可以直接使用預設針對 python 所調適的偵錯工具,而不必再重複地修改 launch.json 檔(亦不會產生 .vscode 資料夾)。



結論:
        再次強調,以上內容都是透過網路搜尋而來,而這篇主要是給還不熟悉這套軟體,或相對不想花太多時間再調適編輯器的開發者參考,我相信針對這個問題,應該會有更好的辦法來解決,但我就是上面提到的後者,也希望有看的這篇文章的讀者,若有更好的做法,於下方留言,讓這些問題可以被處理得更完善。



註解:

[1] 文中所提及之擴充套件即為:


[2] json 的相關介紹:
1. https://zh.wikipedia.org/wiki/JSON(JSON - Wikipedia)





留言

這個網誌中的熱門文章

2019/09/24(二)【ITSA】[C_AR04-易] 邊緣偵測