Vscodeのデバッグ構成と出力中国語の文字化け、これら2つの問題は、解決が最も難しい2つの問題であり、vscodeを使用するときに遭遇した2つの最も重要な問題です。インターネット上の回答の多くは古くて役に立たないため、多くのお金を費やしています。私は自分の時間に役立つ解決策をインターネットで検索しましたが、幸いなことに、多くの試みを組み合わせた後、ようやくそれを解決するのは困難でした。
そこで、私が遭遇した問題を要約し、対応する解決策を書きました。しかし、コンピューターの状況は人によって異なりますが、それでも、私が見た友人にいくつかの助けと解決策を提供したいと思っています。以下は私のコンピューターの種類と構成です。
- C ++はmingw64を使用します
この記事で取り上げる4つの問題は次のとおりです。
質問1:ネイティブブレークポイントのデバッグと実行を構成するにはどうすればよいですか?
質問2:デバッグおよび実行環境をvscodeのターミナルまたはシステムのcmdターミナルに変更するにはどうすればよいですか?
質問3:vscodeの組み込みターミナルで、Powershellターミナルまたはcmdターミナルを選択するにはどうすればよいですか?
質問4:漢字の文字化けした出力を解決するにはどうすればよいですか?
質問1:ネイティブブレークポイントのデバッグと実行を構成するにはどうすればよいですか?
この質問は、vdscode(ショートカットキーはF5)でデバッグをブレークポイントできる関数、つまり次の図の関数について言及しています。
私の提案は次のとおりです。
- ワークスペースのディレクトリに直接新しい
.vscode
フォルダを作成します; .vscode
作成tasks.json
し、launch.json
二つのファイルにフォルダ。- 次の2つの段落をこれらの2つのファイルに貼り付けます(他の人の段落も貼り付けるため)。
- tasks.json :(変更せずにコピーするだけです)
{
"version": "2.0.0",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
- launch.json :( miDebuggerPathの値をmingw64
gdb.exe
の場所に変更する必要があります。gdb.exeはmingwのbinフォルダーにあります。エスケープ文字を避けるために\
、変更に注意し\\
てください)
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // true为选择外置终端、false为选择vdcode内置终端
"MIMode": "gdb",
"miDebuggerPath": "D:\\My_Software\\mingw64\\bin\\gdb.exe", // 这里要替换成你的mingw64的gdb.exe的位置,不要写成gcc,这个是debug的exe
"preLaunchTask": "g++",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
},
]
}
- コードファイルの命名に注意してください!!!.cppコードファイルとmingwディレクトリおよびファイル名は、中国語またはその他の英語以外のアンダースコア文字で表示しないでください。!C / C ++言語変数の命名規則に準拠するようにしてください。準拠しないと、
No such file or directory
エラーが発生します(例は.cppファイルに名前を付けることです哈哈.cpp
)。
- 次に、F5キーを押して、デバッグのポイントを破ろうとします(問題がある場合は、メッセージを残すことができます...あまり理解できないかもしれませんが、この状況が発生した場合は、解決する可能性があります)
質問2:デバッグおよび実行環境をvscodeのターミナルまたはシステムのcmdターミナルに変更するにはどうすればよいですか?
でlaunch.json
セット"externalConsole"
:
"externalConsole": true // true代表在系统终端运行,非,false代表在vscode内置终端运行
質問3:vscodeの組み込みターミナルで、Powershellターミナルまたはcmdターミナルを選択するにはどうすればよいですか?
- vscode設定
terminal.integrated.shell.windows
で直接検索し、[在setting.json中编辑
:(検索結果に「Windowsのターミナルで使用されるシェルのパス(デフォルト...)」が表示されていることに注意してください)をクリックすると、コンピューターの組み込みターミナルがわかります。はデフォルトでpowershellです)、それで私はそれをcmdに変更することを選ぶことができます。
- cmdターミナルに変更します。
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
質問4:漢字の文字化けした出力を解決するにはどうすればよいですか?
2番目の質問では、システムcmdターミナルとvscodeの組み込みターミナルでcppファイルを実行することを選択したので、問題は2つの状況に分ける必要があります。
1つ目は、システムcmdディストーション端末の場合です(中国語のディストーション方法は、すべての端末がファイルシステムを使用するために出力UTF-8を話します)。
vscodeで新しく作成された.cppファイルはデフォルトでUTF-8エンコードされているため、デバッグ時にシステムcmdターミナルがポップアップして.exeファイルを実行し、cmdターミナルはデフォルトでGBKエンコードになり、中国語が文字化けします。
方法1(ファイルのコードエンコーディングを変更する):
- vscodeはデフォルトでUTF-8エンコーディングで新しく作成されたファイルになり、cmd端末はデフォルトでGBKコットンとリネンを使用するため、UTF-8エンコーディングをGBKエンコーディングに変換することで、中国語の文字化けしたコードを出力する問題を解決できます。
- 右下隅をクリックします
UTF-8
:
- エンコードして保存することを選択します。
- GBKコードを見つけて選択すると、通常どおり中国語を出力できます。
- 右下隅をクリックします
方法2(cmdターミナルのデフォルトのエンコーディングを変更する):
つまり、cmdのデフォルトのエンコーディングをUTF-8に変更します
- レジストリを開きます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
ディレクトリに移動します:
- 右クリック-新しい文字列値、名前は
autorun
、値はchcp 65001
、、それを書き込むためのコマンドをもう1つ追加chcp 65001 >nul
し、書き込んだ後に確認することもできます。UTF-8のコード番号であるchangecode pageの略称chcp
のようで、端末で行ったコマンドの出力を隠すことができます。65001
>nul
- そして、この時点で問題は解決できると喜んで思いますが、再度デバッグを行うと、まだ文字化けしていて、出力が不可解にカバーされていることがわかります。
これをどのように解決できますか???
回答:主な機能の先頭に別の段落を追加します。system("pause");
私の観察によると、このような状況の理由は、cmdがあることである.exe
使用することはありませんautorun
内部のコマンドをするときの実行ファイルを、しかしsystem("pause");
アクティブになり、使用されるとき、それは実行させるためのautorun
コマンドを初期化。 - これまでのところ、この問題は解決されています。
次の図が
>nul
役割です。
2つ目は、vscodeの組み込み端末で文字化けした文字の場合です。
質問3では、vscodeの組み込みターミナルでpowershellターミナルとcmdターミナルを選択する方法を学習したため、この質問はcmdターミナルとpowershellターミナルの2つのケースに分けられます。
- まず、何があっても、まずsetting.jsonで関連情報を構成する必要があります。
- vscodeの設定で直接検索し、
terminal.integrated.shellArgs.windows
をクリックします在setting.json中编辑
。
- vscodeの設定で直接検索し、
terminal.integrated.shellArgs.windowsの設定値は、端末のタイプによって異なります。
- vscodeの組み込みターミナルはcmdターミナルです:
"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],
- vscodeの組み込み端末はPowerShell端末です
"terminal.integrated.shellArgs.windows": [
"-NoExit",
"/c",
"chcp 65001",
">null",
],