由於須要在Windows下調試一個基於C語言的開源工具,調試環境爲VS Code、Microsoft C/C++ Extension、GCC和GDB環境(Mingw-w64)。json
按照VS Code官方文檔Using Mingw-w64 in VS Code一步一步搭建好調試環境,編譯很順利經過了。async
可是調試的時候出問題了。在VS Code中按F5啓動Debug,VS的終端(Terminal)中輸出了一段命令:c:\Users\efrey\.vscode\extensions\ms-vscode.cpptools-0.25.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-gkkeppw1.hde --stdout=Microsoft-MIEngine-Out-frcxsnxq.e4y --stderr=Microsoft-MIEngine-Error-htrolgld.kn1 --pid=Microsoft-MIEngine-Pid-mjgquuhh.yua --dbgExe=C:/mingw-w64/mingw64/bin/gdb.exe --interpreter=mi
,而後就一直停在那裏了,VS Code的Debug視圖左上角也一直在顯示正在加載的滾動進度條。
此時除了終端窗口(Terminal)無響應,輸出(Output)、調試控制檯(Debug Console)也沒有任何信息。工具
停掉調試器,在VS Code中配置開啓日誌,即將"logging": { "engineLogging": true },
加入到launch.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": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:/mingw-w64/mingw64/bin/gdb.exe", "logging": { "engineLogging": true }, "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
重啓按下F5啓動調試,終端窗口仍是和以前同樣,停在那裏。不過在調試控制檯裏能夠看到調試啓動的日誌了,發現其中有一段提示錯誤的信息:"\357\273\2771001-gdb-set target-async on
,Undefined command: \"\357\"
。spa
DEBUG CONSOLE 1: (119) LaunchOptions MIMode='gdb' 1: (119) LaunchOptions MIDebuggerPath='C:/mingw-w64/mingw64/bin/gdb.exe' ... 1: (496) ->(gdb) 1: (500) <-1001-gdb-set target-async on 1: (500) ->&"\357\273\2771001-gdb-set target-async on\n" 1: (500) ->&"Undefined command: \"\357\". Try \"help\".\n" 1: (500) ->^error,msg="Undefined command: \"\357\". Try \"help\"." ...
未定義的命令中的357看起來像是Unicode字符集的格式,致使了gdb沒法識別所以報錯。想起了本身好像在更改系統區域設置中開啓了一個測試版的Unicode UTF8的特性支持。debug
在控制面板
中依次進入時鐘和區域
>區域
,點擊更改位置
,而後切換到管理
頁,進入更改系統區域設置
,而後取消勾選Beta版:使用Unicode UTF8提供全球語言支持(U)
複選框。
重啓電腦後,打開VS Code,按下F5,調試器正常的運行並停在源文件的斷點位置了。調試