新功能速遞:Visual Studio Code中的C++調試

漫漫開發路 發佈 2022-04-25T23:56:06.080227+00:00

距離我們上一篇關於VS Code中C++開發的博客文章已經過去了一陣子了,我們一直在努力開發新功能和對現有Bug進行修復,今天我很高興地向大家介紹VS Code中最新的C++調試器改進,包括,對Apple M1晶片的支持,數據斷點和新的運行/調試按鈕。

距離我們上一篇關於VS Code中C++開發的博客文章已經過去了一陣子了,我們一直在努力開發新功能和對現有Bug進行修復,今天我很高興地向大家介紹VS Code中最新的C++調試器改進,包括,對Apple M1晶片的支持,數據斷點和新的運行/調試按鈕。

對Apple M1的支持

去年,我們為Apple Silicon ARM64架構啟用了語言伺服器支持,這意味著你現在可以在 Apple M1 晶片上本地運行 C++ 擴展的語言伺服器(負責 IntelliSense、代碼導航和自動完成等功能)。 當時,C++擴展的調試器二進位文件並沒有在M1晶片上本地運行。 現在,終於可以了!

使用最新版本的C++擴展,你可以在 M1 晶片上運行 VS Code 時無縫調試C++程序。 大家試試看,有什麼想法請直說。

數據斷點

C++擴展的 1.8.4 版本帶來了對數據斷點的支持,同時在 VS Code 中使用GDB調試 C++程序。當存儲在指定內存地址的值發生變化時,數據斷點會中斷執行。

要在VS Code中調試時設置數據斷點,請右鍵單擊調試窗格中的變量並選擇[Break on Value Change],如下圖所示:

馬上你就會看到調試窗格的斷點部分中列出的數據斷點。

在這個例子中,如果我們繼續運行程序,下一次中斷將是局部變量 i 改變值的時候。 使用調試控制面板繼續運行程序。

果然,當 i 將值從 1 更改為 2 時,執行中斷。

數據斷點故障排除

在同一個示例程序中,如果在字符串類型的 msg 上設置數據斷點,你可能會在調試控制台中看到一條錯誤消息:無法設置數據斷點:值不在預期範圍內。 (參數「大小」)。

這是因為字符串類型是 32 字節,並且我們可以設置數據斷點的大小有限制。 這種限制來自這樣一個事實,即你的程序運行的體系結構具有它可以使用的有限數量的硬體數據斷點。 下表顯示了每個架構可以使用多少個寄存器。

新的啟動調試按鈕

我們知道設置 tasks.json 和 launch.json 來運行和調試 C++ 文件並不是很方便。 在這次的新版本中,我們在VS Code 中添加了一個新的調試按鈕。
在 1.9.7 更新中,只要 C 或 C++ 文件處於活動狀態,你就會在編輯器的右上角看到一個播放按鈕。 它與 Python 擴展、Java 擴展和 Code Runner 擴展使用的播放按鈕相同。

按鈕有兩種模式:「運行 C/C++ 文件」和「調試 C/C++ 文件」。 默認模式是「運行 C/C++ 文件」,你可以使用下拉菜單切換模式。

如果你的工作區中已經有一個 launch.json 文件,那麼在確定如何運行和調試 C++ 文件時,播放按鈕將從該文件中讀取。 如果你沒有launch.json,播放按鈕將即時創建一個臨時的「快速調試」配置,完全不需要launch.json!

當你的項目沒有 launch.json 時,我們還簡化了 F5(運行 > 開始調試)以使用與播放按鈕相同的臨時「快速調試」配置。 如果你需要創建 launch.json 來自定義調試,請從主菜單中選擇 Run > Add Configuration…。

注意:我們仍在推出運行/調試播放按鈕,因此默認情況下你可能看不到它,但你可以通過在用戶設置中啟用 C_Cpp:調試快捷方式來選擇加入。

總結

咋都是VSC的,咱們猿友的老平台,Visual Studio 不搞了?
來的來了。。。

最後

Microsoft Visual C++團隊的博客是我非常喜歡的博客之一,裡面有很多關於Visual C++的知識和最新開發進展。大浪淘沙,如果你對Visual C++這門古老的技術還是那麼感興趣,則可以經常去他們那(或者我這)逛逛。

關鍵字: