[Vscodeデバッグ構成、出力中国語の文字化けソリューション] VSCodeのC ++ネイティブブレークポイントデバッグデバッグおよび実行構成と中国語の文字化けの問題(非コードランナー)について

Vscodeのデバッグ構成出力中国語の文字化け、これら2つの問題は、解決が最も難しい2つの問題であり、vscodeを使用するときに遭遇した2つの最も重要な問題です。インターネット上の回答の多くは古くて役に立たないため、多くのお金を費やしています。私は自分の時間に役立つ解決策をインターネットで検索しましたが、幸いなことに、多くの試みを組み合わせた後、ようやくそれを解決するのは困難でした。
そこで、私が遭遇した問題を要約し、対応する解決策を書きました。しかし、コンピューターの状況は人によって異なりますが、それでも、私が見た友人にいくつかの助けと解決策を提供したいと思っています。以下は私のコンピューターの種類と構成です。
ここに画像の説明を挿入

  • C ++はmingw64を使用します

この記事で取り上げる4つの問題は次のとおりです。

質問1:ネイティブブレークポイントのデバッグと実行を構成するにはどうすればよいですか?
質問2:デバッグおよび実行環境をvscodeのターミナルまたはシステムのcmdターミナルに変更するにはどうすればよいですか?
質問3:vscodeの組み込みターミナルで、Powershellターミナルまたはcmdターミナルを選択するにはどうすればよいですか?
質問4:漢字の文字化けした出力を解決するにはどうすればよいですか?


質問1:ネイティブブレークポイントのデバッグと実行を構成するにはどうすればよいですか?

この質問は、vdscode(ショートカットキーはF5)でデバッグをブレークポイントできる関数、つまり次の図の関数について言及しています。
ここに画像の説明を挿入
私の提案は次のとおりです。

  1. ワークスペースのディレクトリに直接新しい.vscodeフォルダを作成します;
  2. .vscode作成tasks.jsonし、launch.json二つのファイルフォルダ
  3. 次の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の値をmingw64gdb.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
                    }
                ],
                 
            },
        ]
}
  1. コードファイルの命名に注意してください!.cppコードファイルとmingwディレクトリおよびファイル名は、中国語またはその他の英語以外のアンダースコア文字で表示しないでください。C / C ++言語変数の命名規則に準拠するようにしてください。準拠しないと、No such file or directoryエラー発生します(例は.cppファイルに名前を付けることです哈哈.cpp)。
    エラー
  2. 次に、F5キーを押して、デバッグのポイントを破ろうとします(問題がある場合は、メッセージを残すことができます...あまり理解できないかもしれませんが、この状況が発生した場合は、解決する可能性があります)

質問2:デバッグおよび実行環境をvscodeのターミナルまたはシステムのcmdターミナルに変更するにはどうすればよいですか?

launch.jsonセット"externalConsole"

"externalConsole": true // true代表在系统终端运行,非,false代表在vscode内置终端运行

質問3:vscodeの組み込みターミナルで、Powershellターミナルまたはcmdターミナルを選択するにはどうすればよいですか?

  1. vscode設定terminal.integrated.shell.windows直接検索し、[ 在setting.json中编辑:(検索結果に「Windowsのターミナルで使用されるシェルのパス(デフォルト...)」が表示されていることに注意してください)をクリックすると、コンピューターの組み込みターミナルがわかります。はデフォルトでpowershellです)、それで私はそれをcmdに変更することを選ぶことができます。
    ここに画像の説明を挿入
  2. 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エンコーディングに変換することで、中国語の文字化けしたコードを出力する問題を解決できます。
    1. 右下隅をクリックしますUTF-8
      ここに画像の説明を挿入
    2. エンコードして保存することを選択します。ここに画像の説明を挿入
    3. GBKコードを見つけて選択すると、通常どおり中国語を出力できます。
      ここに画像の説明を挿入

方法2(cmdターミナルのデフォルトのエンコーディングを変更する):
つまり、cmdのデフォルトのエンコーディングをUTF-8に変更します

  1. レジストリを開きます。
    ここに画像の説明を挿入
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processorディレクトリに移動します
    ここに画像の説明を挿入
  3. 右クリック-新しい文字列値、名前はautorun、値はchcp 65001、、それを書き込むためのコマンドをもう1つ追加chcp 65001 >nulし、書き込んだ後に確認することもできますUTF-8のコード番号であるchangecode pageの略称chcpようで、端末で行ったコマンドの出力を隠すことができます。65001>nul
    ここに画像の説明を挿入
  4. そして、この時点で問題は解決できると喜んで思いますが、再度デバッグを行うと、まだ文字化けしていて、出力が不可解にカバーされていることがわかります。
    ここに画像の説明を挿入
    これをどのように解決できますか?
    回答:主な機能の先頭に別の段落を追加します。system("pause");
    ここに画像の説明を挿入
    私の観察によると、このような状況の理由は、cmdがあることである.exe使用することはありませんautorun内部のコマンドをするときの実行ファイルを、しかしsystem("pause");アクティブになり、使用されるとき、それは実行させるためのautorunコマンドを初期化。
  5. これまでのところ、この問題は解決されています。

次の図が>nul役割です。
ここに画像の説明を挿入

2つ目はvscodeの組み込み端末文字化けした文字の場合です。

質問3では、vscodeの組み込みターミナルでpowershellターミナルとcmdターミナルを選択する方法を学習したため、この質問はcmdターミナルとpowershellターミナルの2つのケースに分けられます。

  • まず、何があっても、まずsetting.jsonで関連情報を構成する必要があります。
    • vscodeの設定で直接検索し、terminal.integrated.shellArgs.windowsをクリックします在setting.json中编辑

terminal.integrated.shellArgs.windowsの設定値は、端末のタイプによって異なります。

  1. vscodeの組み込みターミナルはcmdターミナルです:
"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],
  1. vscodeの組み込み端末はPowerShell端末です
"terminal.integrated.shellArgs.windows": [
        "-NoExit",
        "/c",
        "chcp 65001",
        ">null",
    ],

おすすめ

転載: blog.csdn.net/MYMarcoreus/article/details/113845647
おすすめ