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

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

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

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

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

GDB

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

デバッグ

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

Q&A

解決済

2回答

6035閲覧

VScode と WSL を使用したデバッグができない

MioK

総合スコア15

C

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

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

GDB

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

デバッグ

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

0グッド

0クリップ

投稿2020/01/21 02:50

質問

windows 10 上の Visual Studio Code(VScode) と Remote 拡張機能を用いて WSL 上で C言語でプログラミングをしています。
ただ、ステップ実行のデバッグをすると getcharやprintfなどの関数を呼び出した際にエラーをはいて止まってしまいます

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

error

1'getchar.c' を開くことができません:ファイル(Error:ファイルが見つかりません(vscode-remote://wsl+ubuntu/build/glibc-OTsEL5/glibc-2.27/libio/getchar.c))を読み取ることができません。

というエラーが出ます。

イメージ説明
「ファイルの作成」を試しましたが、 Permission Error が出ます。

該当のソースコード

エラーの出るコードの一例です

test.c

1#include <stdio.h> 2 3int main() { 4 char tp; 5 while ((tp = getchar()) != '\n') { 6 putchar(tp); 7 } 8 9 return 0; 10}

試したこと

Vscode の自動ビルド&実行(デバッグなし) → 動作
Vscode のデバッグ機能 → 動作
Vscode のデバッグ機能 + ステップ実行 → 関数で上記のエラー

環境

Windows 10 (1910)
Ubuntu (WSL) : version 18.04
Vscode : 1.41.1

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

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

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

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

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

Y.H.

2020/01/21 02:55

「ステップ実行」とは具体的にステップインしているのでしょうか?
MioK

2020/01/21 03:01

ステップインで実行したときです
quzq

2020/01/21 03:10 編集

getchar.cファイルの存在する物理パスはどこでしょうか? それと、プロジェクトフォルダの物理パスを教えてください。
Y.H.

2020/01/21 03:18

getchar()の中までステップインしたいのでしょうか? であればソースファイルをどこかから持ってこないと出来ませんが。 エラー内容の通りgetchar.c(getchar()のソースファイル)が無いのでステップインできませんという事です。
MioK

2020/01/21 07:38

ありがとうございます。 ステップインとステップアウトの区別ができていませんでした。
guest

回答2

0

解決したようですが、蛇足です。

質問記載のコードのステップ実行であればすべてステップオーバーでいいと思いますよ。

用語説明
ステップオーバー現在の行を実行し停止
ステップイン関数の場合は関数の中に入ってステップ実行継続
関数じゃない場合は現在の行を実行し次の行で停止(ステップオーバーと同じ動作)
ステップアウト現在実行している関数の終了まで実行し停止

投稿2020/01/21 08:07

Y.H.

総合スコア7918

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

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

0

自己解決

デバッグでステップインステップアウトの区別ができていなかった。
実際にステップアウトでデバッグをしたら動作した。

投稿2020/01/21 07:40

MioK

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問