質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

838閲覧

VScodeでC++のプログラムをデバッグしようとしたところ、「the value of midebuggerpath is invalid」というエラーが出る

nanndato01

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2024/06/13 13:28

実現したいこと

VScode上でC++のプログラムをデバッグし、変数の値などを読み取りたい

前提

VScode上でC++を勉強しているのですが、ある問題を解いているときに配列の範囲外を指定してしまうエラーが発生しました。そこで、デバッグをして変数の値を読み取りミスを確認しようとしたのですが、エラーを吐いてできませんでした。一からワークスペースを作ることにして、サイトを参考にして構成したのですが、デバッグしようとすると「the value of midebuggerpath is invalid」のメッセージが出てデバッグできません。

発生している問題・エラーメッセージ

「the value of midebuggerpath is invalid」

該当のソースコード

C++

1#include <C:/bits/stdc++.h> 2using namespace std; 3 4int main(){ 5 int a=10; 6 for(int i=0;i<a;i++){ 7 cout << "Hello World" << endl; 8 } 9}

試したこと

サイトを真似して一から構成しました。
https://daily-tech.hatenablog.com/entry/2018/11/17/012113
https://dianxnao.com/vscode%EF%BC%9Agcc%E3%83%87%E3%83%90%E3%83%83%E3%82%AC%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9Alaunch-program-does-not-exist-%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/
自分はmingwをC:\pg\mingw64に入れているので、そこも変更しています。

補足情報

task.jsonの中身

C++

1{ 2 "version": "2.0.0", 3 "tasks": [ 4 { 5 "label": "echo", 6 "type": "shell", 7 "command": "g++", 8 "args":[ 9 "-g", "${file}", "-o", "${fileBasenameNoExtension}" 10 ], 11 "group":{ 12 "kind": "build", 13 "isDefault": true 14 } 15 } 16 ] 17}

c_cp_properties.jsonの中身

C++

1{ 2 "configurations": [ 3 { 4 "name": "Win32", 5 "includePath": [ 6 "${workspaceFolder}/include" 7 ], 8 "defines": [ 9 "_DEBUG", 10 "UNICODE", 11 "_UNICODE" 12 ], 13 "windowsSdkVersion": "10.0.22621.0", 14 "compilerPath": "cl.exe", 15 "cStandard": "c17", 16 "cppStandard": "c++17", 17 "intelliSenseMode": "windows-msvc-x64" 18 } 19 ], 20 "version": 4 21}

launch.jsonの中身

C++

1{ 2 // Use IntelliSense to learn about possible attributes. 3 // Hover to view descriptions of existing attributes. 4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "(gdb) Launch", 9 "type": "cppdbg", 10 "request": "launch", 11 "program": "${workspaceFolder}/src/sample.exe", 12 "args": [], 13 "stopAtEntry": false, 14 "cwd": "${workspaceFolder}", 15 "environment": [], 16 "externalConsole": true, 17 "MIMode": "gdb", 18 "miDebuggerPath": "C:\\pg\\MinGW\\bin\\gdb.exe", 19 "setupCommands": [ 20 { 21 "description": "Enable pretty-printing for gdb", 22 "text": "-enable-pretty-printing", 23 "ignoreFailures": true 24 } 25 ] 26 } 27 ] 28 }

C++フォルダの構成

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分はmingwをC:\pg\mingw64に入れているので、

でしたら

"miDebuggerPath": "C:\\pg\\MinGW64\\bin\\gdb.exe",

では?

投稿2024/06/13 14:18

hiroki-o

総合スコア1361

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanndato01

2024/06/13 14:41

修正ミスをしていました。 直してデバッグしたところ、次のようなエラーが出ました 「Unable to start debugging. Unexpected GDB output from command "-environment-cd"C:\\Users\\~~\\OneDrivea¥¥ドキュメント¥¥C++2"". C:\Users\~~¥OneDrivea¥ドキュメント¥C++2:""No such file or directory.」 ~~のところは自分の名前なので変えています。 まだどこかまちがっているのでしょうか?
hiroki-o

2024/06/13 14:48

OneDrivea→OneDrive では?
nanndato01

2024/06/13 14:50

OneDriveの後に学校の名前が記載されていたので、それを消しつつ同じ名前のフォルダと被らないためにOneDriveaにしました、説明足らずですみません
hiroki-o

2024/06/13 14:58

「No such file or directory.」と出ているので、そのパスが実際にあるかどうか自分で確認してください。 提示されている情報にOneDriveに関する記述は無いです。
nanndato01

2024/06/13 15:12

パスを調べてみたのですが、実際にありました。
hiroki-o

2024/06/13 15:40

ググったら、パスに日本語が入っているとダメだそうです。
nanndato01

2024/06/13 16:02

ドキュメントをDocumentにした後再起動したのですが、エラー文の「ドキュメント」が変わりませんでした。ターミナルでDocumentに移動しようとしてもないと言われます
hiroki-o

2024/06/13 16:13

でしたら、ワークスペースを日本語パスが含まれない場所に変更してください。
nanndato01

2024/06/13 16:15

C++2フォルダを日本語がないC:\Users\~~\C++2に置いてデバッグを実行したところ、このような文章が出力されました。 Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded. Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded. Loaded 'C:\pg\mingw64\bin\libstdc++-6.dll'. Symbols loaded. Loaded 'C:\pg\mingw64\opt\bin\libgcc_s_seh-1.dll'. Symbols loaded. Execute debugger commands using "-exec <command>", for example "-exec info registers" will list registers in use (when GDB is the debugger) Kill the program being debugged? (y or n) [answered Y; input not from terminal] [Inferior 1 (process 1384) killed] The program 'C:\Users\~~\C++2/src/sample.exe' has exited with code 0 (0x00000000). 先ほどと同じく、~~のところは本名のため隠しています。 これはデバッグが成功しているのでしょうか?
hiroki-o

2024/06/13 16:27

成功しているというか、デバッガを中断したのでsample.exeは正常終了(return 0)しました、ということです。 -exec 何とか、でデバッガのいろいろな機能が使えます。
nanndato01

2024/06/13 16:42

色々試したところ、本来自分がやりたかったブレイクポイントでの変数の値などを読み取ることができていました。 デバッグをすると同時にwindows terminalが起動したのですが、これはどのような用途で使うのでしょうか?
hiroki-o

2024/06/13 16:47

それは、Visual Studio Codeを通さずに直接gccコマンドやgdbコマンドを叩く場合に使用します。
nanndato01

2024/06/13 16:49

回答ありがとうございます。 問題が解決しました。 夜中まで質問にお付き合いいただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問