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

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

新規登録して質問してみよう
ただいま回答率
85.48%
GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

C++

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

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

Q&A

解決済

1回答

2662閲覧

Visual Studio Codeでgdbを使ってデバッグしようとするとエラーが表示される

mit2020

総合スコア4

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

C++

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

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

0グッド

0クリップ

投稿2020/04/05 19:27

編集2020/04/06 07:06

Visual Studio Codeでgdbを使ってデバッグしようとするとエラーが表示される

こんにちは。Visual Studio Code初心者です。
Windows上でVSCode/MinGWを使用してc/c++のビルド&デバッグ環境を構築したいと思っています。
こちらなどを参考に環境構築を試みていたのですが、
ビルドまでは出来たように見えるものの、gdbをコールするところでエラーが発生し、これ以上進められていません。
一方でgdbをコマンドプロンプトから普通に呼ぶとうまくいっているように見えます(後述)。

どなたかお詳しい方、助けて頂けますでしょうか。
宜しくお願い致します。

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

以下のようなエラーメッセージが表示されます。
イメージ説明

対象コード

  • F:\tmp\code\workspace\helloworld.cpp

helloworld

1#include <iostream> 2#include <vector> 3#include <string> 4 5using namespace std; 6 7int main() 8{ 9 vector<string> msg{"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"}; 10 11 for (const string &word : msg) 12 { 13 cout << word << " "; 14 } 15 cout << endl; 16} 17
  • F:\tmp\code\workspace.vscode\tasks.json

tasks

1{ 2 // See https://go.microsoft.com/fwlink/?LinkId=733558 3 // for the documentation about the tasks.json format 4 "version": "2.0.0", 5 "tasks": [ 6 { 7 "label": "helloworld", 8 "type": "shell", 9 "command": "g++", 10 "args": [ 11 "-g", 12 "helloworld.cpp" 13 ], 14 "group": { 15 "kind": "build", 16 "isDefault": true 17 } 18 } 19 ] 20}
  • F:\tmp\code\workspace.vscode\launch.json

launch

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: 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}/a.exe", 12 "args": [], 13 "environment": [], 14 "cwd": "${workspaceFolder}", 15 "stopAtEntry": false, 16 "externalConsole": true, 17 "MIMode": "gdb", 18 "miDebuggerPath": "c:\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 "preLaunchTask": "helloworld" 27 } 28 ] 29}

-c_cpp_properties.json

c_cpp_properties

1{ 2 "configurations": [ 3 { 4 "name": "Win32", 5 "includePath": [ 6 "${workspaceFolder}/**", 7 "C:\MinGW\include" 8 ], 9 "defines": [ 10 "_DEBUG", 11 "UNICODE", 12 "_UNICODE" 13 ], 14 "windowsSdkVersion": "10.0.17134.0", 15 "compilerPath": "C:\MinGW\bin\g++.exe", 16 "cStandard": "c11", 17 "cppStandard": "c++17", 18 "intelliSenseMode": "clang-x64" 19 } 20 ], 21 "version": 4 22}
  • VSCode Extension

イメージ説明

試したこと

  1. エラーメッセージに従いVSCodeを再起動してみましたが、状況に変化ありません。
  2. ビルドの結果、作業フォルダにa.exeが生成されていることを確認しました。
  3. 生成されたa.exeを実行したところ、"Hello C++ World from VS Code and the C++ extension!"が正常に表示されました。エラーも発生していません。
  4. 同フォルダでコマンドプロンプトからgdbを直接起動し、正常に動作することを確認しました(少なくともそのように見えます)。

イメージ説明

補足情報(FW/ツールのバージョンなど)

  • OS : Windows Server 2016
  • コンパイラ等 : MinGW (C:\MinGWにインストール。PATH追加済)
  • gdb configuration

イメージ説明

解決情報

MinGW-w64を再インストールしなおしたところ、正常にデバッグできるようになりました。
(当該事象が発生していた直接の原因は不明ですが、インストール時オプションでx86_64を設定し損ねていた可能性があると思います)
コメント頂いたお二方、誠に有難うございました。

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

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

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

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

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

thkana

2020/04/05 23:45

> ビルドまでは出来たように見える デバッガ等関係なく、生成されたa.exeを単に実行するとどうなりますか? エラーメッセージではa.exeの形式がおかしい、と言っているので、gccのインストールでなにか問題があったのではないか、と想像します。(なお、MinGWは「コンパイラ」ではありません)
Bull

2020/04/06 06:02 編集

GDB の show configuration の結果から MinGW-W64 をインストールしているものと思われます。 当方でも MinGW-W64 (Version 8.1.0) をインストールしていますが、64bit モジュールと 32bit モジュールが別になっています。 64bit でビルドした .exe を 32bit の GDB でデバッグしようとすると、同じメッセージが出ました。 .exe と GDB で不整合がないか確認してみてください。
mit2020

2020/04/06 07:00

> thakana さん コメント有難うございます。 a.exeをそのまま実行したところ、"Hello C++ World from VS Code and the C++ extension!"と表示されました。正常に動作していると思われます。
mit2020

2020/04/06 07:02

> Bull さん 有難うございます。頂いたコメントからいったんMinGW-w64をインストールし直したところ、エラーが出なくなりました。 はっきりと記憶がないのですが、MinGW-w64のインストールオプションでx86_64を選び損ねていたのかも知れません。
guest

回答1

0

自己解決

MinGW-w64を、インストールし直した(オプションとしてx86_64を指定した)ところ、正常に動作するようになりました。

投稿2020/04/06 07:10

mit2020

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問