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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

3回答

14791閲覧

デバック中にブレークポイントで止まらない(VSCode)

jajaja

総合スコア17

C

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

2クリップ

投稿2019/12/01 19:13

編集2019/12/02 06:58

前提・実現したいこと

エラーメッセージをでないようにしたい
ブレークポイントでデバックをとめたい

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

問題:
下記に記述してあるhello.cのprintf("Hello\n");の行にブレークポイントを置いてデバックを開始しても、デバックが止まらない。

エラーメッセージ:
code runnnerの出力画面のDebug Consoleの欄に

Warning: Debuggee TargetArchitecture not detected, assuming x86_64. =thread-selected,id="1" The program '/Users/プログラムがある場所' has exited with code 0 (0x00000000).

とメッセージが出てデバックができない。
###hello.c

#include <stdio.h> int main(void){ int i = 2; printf("Hello\n"); printf("%d\n",i); return 0; }

launch.json

{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "gcc build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "lldb", "preLaunchTask": "gcc build active file" } ] }

###tasks.json

{ "tasks": [ { "type": "shell", "label": "gcc build active file", "command": "/usr/bin/gcc", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "/usr/bin" } } ], "version": "2.0.0" }

###c_cpp_properties.json

{ "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "macFrameworkPath": [ "/System/Library/Frameworks", "/Library/Frameworks" ], "compilerPath": "/usr/bin/g++", "cStandard": "c11", "cppStandard": "c++14", "intelliSenseMode": "gcc-x64" } ], "version": 4 }

#setting.json

{ "workbench.colorTheme": "Cobalt2", "window.zoomLevel": -1, "editor.formatOnSave": true, "editor.formatOnType": true, "editor.formatOnPaste": true, // ペースト時に自動でフォーマット "editor.fontSize": 15, "terminal.integrated.fontSize": 15, "python.linting.flake8Enabled": true, //1秒ごとに自動保存して、その度に構文チェック "files.autoSave": "afterDelay", "files.autoSaveDelay": 1000, "python.linting.lintOnSave": true, //空行に空白が含まれるとWarningになるW293は、エディタの自動インデントが引っかかるのでオフ。 //+などのオペレータの後で改行するとWarningになるW504もオフ。 "python.linting.flake8Args": [ "--ignore=W293, W504", ], //formatting.providerをautopep8に "python.formatting.provider": "autopep8", //標準では空白を調整するフォーマッティングしかしないが、setting.jsonに下を追記すると //a == None を a is None に書き換えるような、より積極的なフォーマッティングを行う。 "python.formatting.autopep8Args": [ "--aggressive", "--aggressive", ], "python.linting.pylintEnabled": false, "C_Cpp.clang_format_fallbackStyle": "Google", "C_Cpp.clang_format_style": "AllowShortBlocksOnASingleLine:false", "editor.suggestSelection": "first", "code-runner.executorMap": { "javascript": "node", "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", "cの変更前": "c:cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "c": "cd $dir && gcc -g $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "php": "php", "python": "python -u", "perl": "perl", "perl6": "perl6", "ruby": "ruby", "go": "go run", "lua": "lua", "groovy": "groovy", "powershell": "powershell -ExecutionPolicy ByPass -File", "bat": "cmd /c", "shellscript": "bash", "fsharp": "fsi", "csharp": "scriptcs", "vbscript": "cscript //Nologo", "typescript": "ts-node", "coffeescript": "coffee", "scala": "scala", "swift": "swift", "julia": "julia", "crystal": "crystal", "ocaml": "ocaml", "r": "Rscript", "applescript": "osascript", "clojure": "lein exec", "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt", "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt", "racket": "racket", "ahk": "autohotkey", "autoit": "autoit3", "dart": "dart", "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt", "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt", "haskell": "runhaskell", "nim": "nim compile --verbosity:0 --hints:off --run", "lisp": "sbcl --script", "kit": "kitc --run" } }

試したこと

https://teratail.com/questions/158821
こちらの質問を参考に、setting.json内にあるcode-runner.executorMapのc言語の該当箇所に-gを追加しました。

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

visual stdio code 1.33.1
Mac OS 10.15.1
VScodeの拡張機能は下記の二つです
C/C++ 0.26.1
code runner 0.9.10

初めて質問するため至らない点が多いと思いますが回答していただけたら幸いです。

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

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

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

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

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

guest

回答3

0

真面目に設定ファイルを一つづつ確認したわけではないのですが、ざっと見た限りではbreakしそうな気がします。今まで、他のソースでビルドしてデバッカでブレークできたことはありますか? もしなければ初歩的な確認で申し訳ないのですが

  • -gを追加した後ビルド通ってますか?

json変えただけでビルドしてないとか....

  • launch.jsonのstopAtEntryをtrueにしてみる

デバック開始して最初で止まらなければそもそも違うパスのjson修正してるとか...

あまり的確な助言ではありませんが、参考までに :)

投稿2019/12/03 05:00

glp

総合スコア102

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

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

jajaja

2019/12/03 06:00

回答ありがとうございます。 違うディレクトリですが、8月の時点でデバックはできていました。 現在は全てのディレクトリでデバックができない状況です。 この間にOSのアップデートを行ったのですが、このことが原因である可能性はありますでしょうか。 -gを追加した後ビルド通ってますか? ->無知で申し訳ないのですが、jsonを変更した後に一度gcc hello.cを実行する必要があるということでしょうか。 launch.jsonのstopAtEntryをtrueにしてみる ->trueにして実行してみましたが挙動が変わることはなかったです。 デバック開始して最初で止まらなければそもそも違うパスのjson修正してるとか... ->vsCodeは、VSCode上で現在開いているディレクトリにある、.vscodeファイル内にあるjsonを参照していると考えていたのですが、異なるディレクトリに存在するjsonを参照することがあるのでしょうか。 ご都合がつく時に返信して頂けると幸いです。 よろしくお願いします。
glp

2019/12/03 07:05

こんにちは。(僕もあまりgccの世界は詳しくないのであまり信じないでください :) 前提 gccはソースコードデバックするときは-gオプションつけてビルドする必要があります。("-g3 -O0"とするときも多い) で、vscodeはtakes.jsonにビルド方法を定義するのでここにデバックビルドオプションを記述します。つづいて、launch.jsonでデバックに関するオプションを記述します。 この2つの連携がちゃんと取れているとデバック開始時に(ソースが変更されていれば)自動的にビルドしてデバックできます。 この連携の記載がどこかがっているとリビルドせずにデバックが始まるので、実はデバッグビルド出来ていなかったり、古いソースのままでバックしてたりして混乱したことがあります。 一度ソースを少し変更してデバックスタートしてみてください。設定があっていればterminalにビルドしている様子が流れると思います。
jajaja

2019/12/04 02:28

回答ありがとうございます。 tasks.jsonとlaunch.jsonの詳細な役割を知らなかったため、大変勉強になります。 連携をしなければいけないということを理解したのですが、tasks.jsonとlaunch.jsonの連携の設定はどこで行うのでしょうか? また、デバック実行時 Executing task: /usr/bin/gcc -g /Users/cのコードまでのパス/cのコード -o /Users/cのコードまでのパス/cのコード名(.cの拡張子はついていない) < Terminal will be reused by tasks, press any key to close it. と表示されるので、launch.jsonとtasks.jsonの連携は取れているという認識で大丈夫でしょうか?
glp

2019/12/04 02:55

そのメッセージを見る限りビルドは正しくdebug用のオプションを付けて通っているようですね。そうするとなんで行かないんだろ・・・あとは初歩的なブレークポアントのかけ方とか、デバックGoのかけたかくらいしか思い浮かばないのですが、すでに他のプロジェクトで成功されているのであればそんなことはなさそうですし・・・・ お役に立てずすみません 連携はlaunh.json(デバック開始時に)の中に書かれます。デバックボタンの横のドロップダウンリストに構成一覧が表示されるはずす。 例えば私の環境ではlanch.jsonの中に "name": "asmPP Launch" ...... "preLaunchTask": "asmPP-Build" と書かれていて、構成一覧にはこのname=asmPP Launchが表示されます。デバック開始時に"asmPP Launch"を選択すると この"asmPP-Build"をtasks.jsonの "preLaunchTask": "asmPP-Build" から探してそのbuild方法に従うようです。
jajaja

2019/12/06 07:09

返信遅くなってしまいました。 いえいえ、色々教えていただきありがとうございます。 連携が書かれる位置についてお尋ねしたいことがあります。 デバックボタンの横のドロップダウンリストに構成一覧が確認できないです。 左から、デバックボタン、ドロップダウンリスト、押すとluanch.jsonにタブが変わる歯車マーク、押すとdebug consoleへコンソールのタブが変わるボタンがあるところのドロップダウンリストのことですよね? 自分の場合は、gcc build and debug actがデフォルトで表示されていて、リストを開くとadd configuration..以外に選択するものがないです。 これは連携がうまくできていないという認識で正しいのでしょうか。
glp

2019/12/07 01:31

lounch.json(このなかの"name"タグを使い)ドロップダウンリストに構成が表示されます。回答に画像の貼り方がわからなかったので貼れませんが、私の環境では、launch.jsonに書いた複数の構成を正しく読んで、トロップダウンに表示されています。 したがってここにリストが表示されていないということはlaunch.jsonが正しく読まれていなく、結果としてtasks.jsonも読めていません。 それぞれのjsonに文法エラーはありませんか? vscodeで開けて赤の波線が表示された箇所がないか確認してください。  現状お聞きした限りでは、launch.jsonに問題があって先に進んでいないように思えます
jajaja

2019/12/07 07:47

回答ありがとうございます。 launch.json中に赤線はありませんでした。 launch.json関係に問題がある可能性が高そうですね。 なんとか直せないか試してみます。 ありがとうございました!
guest

0

自己解決

vscodeを入れ直し、C/C++ extention をver0.27.0に変更したところ直りました。
C/C++ extention ver0.26が原因みたいです。
https://github.com/microsoft/vscode-cpptools/issues/3829#issuecomment-578454043

投稿2020/04/02 07:56

jajaja

総合スコア17

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

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

0

jsonというのは実行するコードでもないのでデバッグってのはできません

投稿2019/12/01 23:00

y_waiwai

総合スコア87745

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

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

jajaja

2019/12/02 06:52

回答ありがとうございます。 ソースコードの問題でないと考えたため、載せてなかったです。 質問をより詳細にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問