ページ 11

標準入力ストリームにファイルを指定した時のデバッグ

Posted: 2009年1月24日(土) 22:48
by kazuoni
お邪魔します。

いつもながらかなり初歩的な質問なんですが・・・
タイトルの通り、
標準入力ストリームにファイルを指定した時のデバッグについてなのですが、
なぜデバッグなしで実行で正常に動き、
デバッグで実行すると正常に動かないのですか?

環境はvista,
visual c++ 2008です。

[プロジェクト]→[(プロジェクト名)のプロジェクト]→[デバッグ]
のコマンド引数のところに
< a.txt > b.txt
と指定し、以下のコードをビルドします。
#include<stdio.h>
int main()
{
        printf("テスト\n");
	int c=getchar();
	char i[2];
	i[0]=c;
	i[1]='\0';
	printf("%s",i);
	return 0;
}
a.txtの中はabcとだけ書いてあります。b.txtは中身なしです
この状況で
[デバッグ開始]をするとgetcharを呼び出したら何も返ってきません。
printf("テスト")が実行画面に出ているので、
うまく指定できてないと分かりました。
そこで、[デバッグなしで開始]を実行するとうまくいきます。

これはなぜでしょうか?
ブレイクポイントを立てたかったのですが、立てれません。。
何か良い解決方法はあるのでしょうか?

よろしくお願いします。

23:52修正

Re:標準入力ストリームにファイルを指定した時のデバッグ

Posted: 2009年1月24日(土) 23:58
by Justy

>これはなぜでしょうか?

 バグじゃないですかね、デバッガの。

Can't redirect stdin/stdout for debugging
ttp://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333493

 でも、SP1で直っているようです。

List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for Express Editions
ttp://support.microsoft.com/?scid=kb%3Ben-us%3B950264&x=9&y=9


 ちなみにデバッガのタイプを混合にすると
< a.txt くらいはうまくいったりするようです。

Re:標準入力ストリームにファイルを指定した時のデバッグ

Posted: 2009年1月25日(日) 01:57
by kazuoni
やっと再インストール終わりました。
Justyさんのおっしゃる通りバグだったようです。。
再インストールしたらきっちり動きました。
SP1のversionが古かったのでしょうか^^;
よく分かりませんが、無事解決しました!

ご回答いただきありがとうございました。
またよろしくお願いします。