LoginSignup
18
21

More than 3 years have passed since last update.

MacのVSCodeでC言語のデバッグをする

Last updated at Posted at 2019-01-08

はじめに

  • Macでしか試してません
  • 1フォルダ1プロジェクトです。
    • ひとつのフォルダにtest.c test2.cみたいなのはダメです
  • どこでSegmentation Faultしたかわかるよ!
  • 2019/5/21に更新

いるもの

  • VSCode
  • VSCode用C/C++の拡張機能
  • Xcode Command Line Tools

やってみよう

コード

  • 実行するとSegmentation Faultが出ます
test.c
#include <stdio.h>

int main(int argc, char const *argv[])
{
  int i;
  int *pointer;

  for (i = 0; i < 3; i++)
  {
    printf("Hello World!\n");
  }

  *pointer = 1;

  return 0;
}

ステップ1: 環境の選択

  1. 適当に保存
  2. デバッグ→デバッグの開始を選択

    • キーボードでは(Fn+)F5
    • Touch Bar付きの人は「 ▶︎ 」スクリーンショット 2019-05-21 18.28.59.png
  3. なんか出てくるので「C++(GDB/LLDB)」を押す スクリーンショット 2019-05-21 18.29.32.png

  4. 「clang ナンチャラ」か「gcc ナンチャラ」ならどちらでもOK(基本的に大差なし)スクリーンショット 2019-05-21 18.34.05.png

  5. Launch.jsonが出来てれば設定は終わりスクリーンショット 2019-05-21 18.35.51.png

  6. 自動的にステップ2に進むかもしれません

ステップ2: いざデバッグ

  1. 書いたソースコードに戻る
  2. もう一度「デバッグの開始」
    • (ステップ1の2と同じ)
  3. 許可しますか?みたいなことを聞かれたらパスワードを入力
  4. Segmentation Faultがあったのでこのように怒られますスクリーンショット 2019-01-08 19.12.43.png
  • このようにBreakpointを設定していればスクリーンショット 2019-01-08 19.14.50.png

  • 該当箇所で止まります スクリーンショット 2019-01-08 19.15.45.png

  • 赤丸のボタンを押せば、プログラムを順を追いながら実行できます。

    • ループをしたので青で囲った変数iが増えていますね スクリーンショット 2019-01-08 19.17.06.png
    • いい感じの説明を見つけたので引用させてもらいます

[続行]ボタン:中断したプログラムの実行を続行する
[ステップ オーバー]ボタン:現在行を実行する。行に関数呼び出しが含まれているときには、その関数を呼び出して、関数呼び出し後の行で実行を中断する
[ステップ インする]ボタン:現在行を実行する。行に関数呼び出しが含まれているときには、その関数の先頭行で実行を中断する
-[ステップ アウト]ボタン:現在実行中の関数を最後まで実行して、その関数を呼び出した次の行で実行を中断する
[再起動]ボタン:デバッグを最初からやり直す
[停止]ボタン:デバッグを終了する
VS CodeでPythonコードのデバッグも楽々!! (1/4):Visual Studio Codeで始めるPythonプログラミング - @IT

  • 赤い四角を押せば終了です。お疲れ様でした

補足

  • scarf()は使わない方が楽です。
  • コマンドライン引数はlaunch.jsonのargs内に書きましょう
  • グローバル変数はわかりません

参考

VSCodeでC言語を実行 - Qiita
Mac の Visual Studio Codeで C/C++ をデバッグするまで(OSX10.11.6, VSCode1.4.0) - Qiita

18
21
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
21