Visual Studio Code でデバッグを行いたい
現在、c++の勉強をしていて、デバッグの環境を整えようとしたところつまずいてしまったので、解決方法を教えていただけるとありがたいです。
発生している問題・エラーメッセージ
Unable to start debugging. The value of miDebuggerPath is invalid
というエラーが出てしまいます。
launch.jsonの内容
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "windows": { "miDebuggerPath": "C:/msys64/usr/bin/gdb.exe" }, "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
試したこと
https://qiita.com/AokabiC/items/e9312856f588dd9303ed
このサイトを参考にVisual Studio Code を導入しました。
実行はできるようになりました。
Pathの中身をいろんなサイト参考に変更してみたのですが、エラーメッセージは変わりませんでした。
そもそもPathについてよくわかっていないので、このことについても教えていただけるとありがたいです。
https://qiita.com/iwatake2222/items/14b749a945dda0af949f
の「VSCodeからデバッグする」を見ると、「launch.json」の「miDebuggerPath」の書き方が違うような
あと、
C:/msys64/usr/bin/gdb.exe
は合ってますか?
返信が遅れて大変申し訳ないです。
"miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe",
のように書き直しても、同じエラーが出てしまいました。
"program": "${workspaceFolder}/a.out",
を"program": "${workspaceFolder}/a.exe",
と直すと、「launch:program'C:\C++Project\a.exe' does not exist 」というエラーが出てしまいました。
C:/msys64/usr/bin/gdb.exeについて確認したところ、見つかりませんとなってしまいました。
miDebuggerPathにはどのパスを入れればいいのでしょうか?
C:\msys64\usr\bin
に「gdb.exe」はありますか?
ない場合ですが、Msys2のgdbをインストールしましたか?
参考
http://www.den.t.u-tokyo.ac.jp/ad_prog/msys2/
の「必要なソフトウェアのインストール」
Msys2のgdbをインストール済みの場合は、Msys2をインストールした場所の下のどこかに「gdb.exe」があるはずなので、探してください
見つかったら、それの絶対パスの「\」を「/」に変えたものを「miDebuggerPath」に設定してみてください
返信ありがとうございます。
どうやらgdb.exeがなかったようなので、送っていただいたURLからインストールしました。
gdb.exeに関するエラーはなくなりました。
ありがとうございます。
ただ、今度はコンソールに次のようにエラーが出てしまいました。
ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Error creating process C:\C++Project\a.out, (error 193).
The program 'C:\C++Project\a.out' has exited with code 42 (0x0000002a).
どのようにしたらいいのでしょうか?
デバッグしようとしているソースコードに依存するのか確認するために、
https://www.geekpage.jp/programming/c/helloworld.php
の「とりあえず書いてみる」のソースコードで、同じエラーが出るか試してみてください
もし、上記Webページのような簡単なコードでもエラーになるなら、VS Codeを使わなくて、gdb単独でならちゃんと使えるかを確認することをお勧めします
おそらく、Windowsのメニューで「MSYS2」→「MinGW 64bit Shell」みたいなの(名前は微妙に違うかも)を辿って実行したら、gccとかgdbとかがコマンドラインで実行できるようなターミナル(コマンドプロンプトみたいなもの)が起動すると思うので、その状態で、
https://rat.cis.k.hosei.ac.jp/article/devel/debugongccgdb1.html
に書かれてるようなことが実行可能か確認して、もしうまくいかなければ、VS Code上でも当然ダメですから、それを直す必要があります
gdb単独でなら使えるなら、原因はおそらくVS Code側にあります
設定か、あるいは使い方か
送ってもらったURLの「とりあえず書いてみる」のソースコードで試したところ、同じエラーが出てしまいました。
ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Error creating process C:\C++Project\a.out, (error 193).
MinGWであっても実行できなかったので、まずそこを直すことにしました。
MinGWをインストールしたときにPathを設定していなかったことが原因でした。
これを解決するときは以下のサイトが役に立ちました。
https://dianxnao.com/windowsにc言語開発環境-mingw-w64(gccコンパイラ)を導入する/
最終的に、コマンドプロンプト上で実行することはできるようになりましたが、VS codeでデバッグすることはできませんでした。
もう少し調べてみます。
あなたの回答
tips
プレビュー