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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Q&A

解決済

2回答

4507閲覧

vscodeにてデバッグの設定をしたい(一応c言語の)初心者

houki

総合スコア22

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

0グッド

2クリップ

投稿2018/08/16 05:41

編集2018/08/16 10:00

前提・実現したいこと

vscodeでデバッグができるように、回答者さんに教えていただきながら1つ1つ一緒に手順を踏んで設定していきたい。
vscode環境設定などよく理解せず、使っているので、この機にある程度設定したい。

プログラミング初心者でエディターのことについて、知識がないので、少しずつ理解していきたい。

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

エラーメッセージ

該当のソースコード

ソースコード

試したこと

こちらのサイトを参照させていただきました。URL:https://qiita.com/keita1987/items/f01cf9f307fedfca00c6

このサイトを見て、launch.json の編集の項目の「C/C++ それぞれの "program"行を変更する。」の部分で、それぞれの "program"行を何から何に変更すればいいのか分かりません。

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

mac book 使っています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/08/16 06:34

過去の質問を参照すればVisual Studioを使用しているらしいのはわかりますが、もう少し詳細(MacかWindowsか、Visual StudioかgccもしくはClang等か等々)な情報を書いたほうが良いと思います。
退会済みユーザー

退会済みユーザー

2018/08/16 06:38

参照したサイトのアドレスとそのサイトの何処が具体的にわからなかったのかを書かないと、全部わからないじゃ丸投げな質問になってしまいます。
yumetodo

2018/08/16 09:44

何を見ながらどうなって、期待した動作をしないけどなんで?とかなら答えようもあるけど、こんな丸投げされても答えようがない。
houki

2018/08/16 10:01

すみません。試したことの箇所を編集しました。コメント待っています。よろしくお願いします。
guest

回答2

0

ベストアンサー

ワークスペース

まず、フォルダ名は何でも良いのでフォルダを作成してその中にソースコードを作成します。
ここではフォルダ名workspace、ソースコードはmain.cpp
コンパイルして出来上がる実行ファイル名はmain.exeとします。

以下、Windows上でコンパイラにgcc、デバッガにgdbを使用した場合の説明になります。
MacでclangとLLDBとか使ってる場合はgccをclangに、gdbをLLDB等に
実行ファイルの拡張子をEXEからMacの実行ファイル形式(outかな?よく知らない)に置き換えて下さい。

WindowsでVisual Stidio Community等のコンパイラを使っている場合は、VSCodeでは無くVisual Studio上でデバッグしませう(VSCodeでも出来るけど…)。

そしたら、メニューのタスク > 既定のビルド タスクの構成を選択します。
構成するタスクの選択が出るのでテンプレートから task.json を生成

すると、タスク テンプレートを選択が出るので、Others 任意の外部コマンドを実行する例を選択

タスクテンプレートを選択

.vscodeフォルダとtask.jsonファイルがない場合は作成されるので、
それを使用しているコンパイラにあわせて編集します。
以下はコンパイラにgccの場合です。

json

1// task.json 2{ 3 // See https://go.microsoft.com/fwlink/?LinkId=733558 4 // for the documentation about the tasks.json format 5 "version": "2.0.0", 6 "tasks": [ 7 { 8 "label": "Debug Build", // タスクの名前(デバッグ用のビルドだとわかれば何でも良いです。) 9 "type": "process", // タスクの種類(shell⇢processに書き換えて下さい) 10 "command": "gcc", // 使用するコンパイラのコマンド名 11 "args": [ // コンパイラに与える引数のリスト 12 "-g", // デバッグ情報を付与 13 "-O0", // 最適化レベル 14 "main.cpp", // ソースファイル名 15 "-omain.exe" // 実行ファイル名 16 ], 17 "group": { // 複数のタスクがある時にこれがデフォルトのビルドタスクとして選択される 18 "kind": "build", 19 "isDefault": true 20 }, 21 // gccでエラーが出た時に該当の箇所へジャンプさせるのに必要 22 "problemMatcher": "$gcc" 23 } 24 ] 25}

あとは、タスク > ビルド タスクの実行でコンパイルを実行し、
workspaceフォルダ内に実行ファイルが生成されるのを確認します。
ここまでが、VSCodeのC/C++向けのワークスペースの基本的な作成方法になります。

つぎに、

アクティビティバーのデバッグを選択して、サイドバーの歯車のアイコンをクリックします。

アクティビティバー

環境の選択が出るのでC++ (GDB/LLDB)を選択します。

環境の選択

.vscodeフォルダ内にlaunch.jsonが作成されるのでこれを編集します。
以下はデバッガーにgdbを使用する場合です。

json

1// launch.json 2{ 3 // IntelliSense を使用して利用可能な属性を学べます。 4 // 既存の属性の説明をホバーして表示します。 5 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 6 "version": "0.2.0", 7 "configurations": [ 8 { 9 "name": "(gdb) Launch", 10 "type": "cppdbg", 11 "request": "launch", 12 // 実行ファイルのパス 13 "program": "${workspaceFolder}/main.exe", 14 "args": [], 15 "stopAtEntry": false, 16 "cwd": "${workspaceFolder}", 17 "environment": [], 18 "externalConsole": true, 19 "MIMode": "gdb", 20 // デバッガーのパス 21 "miDebuggerPath": "C:/env/msys64/mingw64/bin/gdb.exe", 22 "setupCommands": [ 23 { 24 "description": "Enable pretty-printing for gdb", 25 "text": "-enable-pretty-printing", 26 "ignoreFailures": true 27 } 28 ] 29 } 30 ] 31}

主に書き換える場所は以下の2箇所です。

json

1"program": "enter program name, for example ${workspaceFolder}/a.exe", 2"miDebuggerPath": "/path/to/gdb",

"program"ではデバッグする対象である実行ファイルのパスを指定します。
${workspaceFolder}は今VSCodeで開いているフォルダのパス、すなわちworkspaceフォルダ内を指します。
その中にあるmain.exeがデバッグ対象なので${workspaceFolder}/main.exeを指定するというわけです。

miDebuggerPathの値はデバッガーの実行ファイルの場所を指します。
もちろんインストールしたフォルダによって異なるので、環境に合わせて書き換えてください。

ここまで準備ができたら、

ガーター(行番号の左の空白部分)をクリックして値を確認したい場所にブレイクポイントを設置します。
ブレイクポイントが設置出来たらF5キーでデバッグを開始できます。

ブレイクポイント


Debuggerの代替

MicrosoftのC/C++パッケージにもデバッガーのサポートはありますが、
追加でNative Debug拡張機能をインストールします。
設定はこちらのほうが簡単です。

Native Debug

launch.jsonの作成する手順の所でC++ (GDB/LLDB)の代わりにGDBLLDBを選択します。

launch.jsonを以下のように編集します。

書き換えるのは"target": "./bin/executable",の部分です。

json

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "Debug", 9 "type": "lldb-mi", // GDBを使う場合はgdbを指定する 10 "request": "launch", 11 "target": "${workspaceRoot}/main.exe", 12 "cwd": "${workspaceRoot}" 13 } 14 ] 15}

あとは、ブレークポイントを設置してF5でデバッグを開始すればOKです。

投稿2018/08/16 14:28

編集2018/08/16 16:27
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

houki

2018/08/16 16:02

「miDebuggerPathの値はデバッガーの実行ファイルの場所を指します。 もちろんインストールしたフォルダによって異なるので、環境に合わせて書き換えてください。」のところで分からず止まっています。 miDebuggerPathの値はどのようにしたら、分かりますか? デバッガーの実行ファイルとはmain.exeのことでしょうか?
退会済みユーザー

退会済みユーザー

2018/08/16 16:44

まず、使っているのは何でしょうか? Mac BookとVSCodeだけだと大雑把すぎてわからないです。 出来れば、OSはMacならmacOS High Sierra、WindowsならWindows 10とかバージョンまで書いて下さい コンパイラもVisual Studio or gcc or Clang or Etc...等使用しているものを gccの場合は、gcc --version と打ち込めばバージョンが確認できるのでこちらも 最低限この2つは追記して下さい main.exeを指定するのはprogramの方です。 miDebuggerPathにはデバッガーにgdbを使用する場合にはgdbの場所を指定します。 gdbを使用してmain.exeをデバッグします。 OSXを使用していてXCodeをインストールしているなら、 コンパイラにはClang、デバッガーにはLLDBが入っていると思います。 (Windowsだと拡張機能の仕様でLLDBが指定出来ないので説明できない) GDBを使用する場合は、Homebrewなりで別途インストールが必要になります。 Windowsの場合も、どのようにコンパイラをインストールしたのかはわかりませんが、コンパイラにgccを使用しているのであればgdbを別途インストールする必要があります。
houki

2018/08/17 03:57

OSはmacOS High Sierraでversionは10.13.6で、コンパイラはgccを使用していて、versionは4.2.1でした。
houki

2018/08/17 04:03

XCodeはインストールしています。
退会済みユーザー

退会済みユーザー

2018/08/17 04:18

Macじゃないので、miDebuggerPathに指定するパスはちょっとわからないですね。 その辺はMacユーザーに聞かないと…。 miDebuggerPathはWindowsでは必須みたいですが、 Macならもしかしたら省略出来るかもしれないので 値をデフォルトのまま変えないか、コメントアウトして試してもらえますか? それで駄目なら、Native Debug拡張機能の方を試してみて下さい こちらはデバッガがインストールされていてシステムにパスが通っていれば、launch.jsonにデバッガーのパスを書かなくても実行できます。 あと、GDBを入れなくてもLLDBという別のデバッガーが入っているのでは?と思います。 GDBで解説している記事の方が大きのでそちらの方がわかりやすいかもしれませんが。
houki

2018/08/17 04:46

省略してf5を押すと、 &"warning: GDB: Failed to set controlling terminal: Operation not permitted\n" Abort trap: 6 (core dumped)と表示されできなかったです。 なのでNaitive Debug拡張機能の方を試してみたいと思います!
退会済みユーザー

退会済みユーザー

2018/08/17 05:24

そのエラーメッセージだと実行する権限が無い?だけでGDB自体は実行出来てるっぽいです。 パスが間違ってるとUnable to start debugging. Launch option ...(後略)と出るので 状況としては↓のサイトと同じような状況っぽいですが http://norikakip.hatenadiary.jp/entry/2016/04/17/055119 コンパイルする時にgcc -gの様にデバッグ情報を付与するオプションを付けましたか?
houki

2018/08/17 06:51

> Executing task in folder vscode.py: gcc -g -O0 othello_ai.c -oothello < ターミナルはタスクで再利用されます、閉じるには任意のキーを押してください。 コンパイル時は上のようになっていますが、これは大丈夫ですよね?
houki

2018/08/17 06:57

Native Debug拡張機能の方ですが、サイドバーの歯車のアイコンを押しても、環境の選択が出てこず、そこで止まっています。
退会済みユーザー

退会済みユーザー

2018/08/17 07:01

エラーがある時は「ターミナルはタスクで再利用されます、閉じるには任意のキーを押してください。」の前にエラーメッセージが出ますね。 何も出ていないなら正常にコンパイル出来ているはずです
guest

0

configurationsprogramについてですが、コンパイルしたプログラムのパスを指定するものです。

vscodeで開いているdirectoryの絶対パスが${workspaceRoot}なので、これを活用しつつ、コンパイルして生成された実行ファイルへのパスを記述します。

投稿2018/08/16 10:12

yumetodo

総合スコア5850

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

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

houki

2018/08/16 10:25

パスの意味はネットで調べまして、理解しました。 実行ファイルにする必要があるのですか?.cファイルのままではダメということですよね? あと、パスの記述を具体的に"program": "enter program name, for example ${workspaceFolder}/a.out",から何に記述したら良いのか教えてください。
yumetodo

2018/08/16 14:51

コンパイルしないとデバッグできないですよね?あなたがコンパイルした生成物をどこにおいているか私はわからないので、答えようがないですね。 例えば >${workspaceFolder}/a.out なら、あなたがvscodeで開いたdirectoryの中にあるa.outというファイルがデバッグ対象の実行ファイルということですね。
yumetodo

2018/08/16 14:53

ところで不安になってきましたが、そもそもコンパイルはできているんですよね?ちゃんと`-g`つけてコンパイルしているんですよね?なんか大前提から不安になってきた
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問