for文でのカウントアップがおかしい

[戻る]
まるぱ 2008/02/19(火) 10:53:59
はじめまして。

今、for文などのループにおいて、おかしな現象が発生しています。
何が悪いのか見当がつかないため、お力を貸してください。

int i;
for(i = 0; i < 1000; i++) {
    TRACE("[%d\]", i);
}

上記コードを実行すると、
アウトプットウィンドウに
[0]
[1]
[2]
・
・
・

と表示されますが、ある数値を超えた時点で間が飛んでしまいます。
たとえば、以下のように396から2840の数字が表示されません。
・
・
[394]
[395]
[2841]
[2842]
・
・

while文でもだめですし、、、
なぜか、forループの中にSleep(1);を入れると飛びがなくなります。

OSは2000,XPpro両方やっていますが同様です。
VC6(SP6)で実行しています。

なんか、狐につままれたようです。

通りすがり 2008/02/19(火) 11:06:58
TRACEの表示が追いついていないだけです。

たいちう 2008/02/19(火) 11:21:17
http://support.microsoft.com/kb/218007/ja

回避方法についても少し書いてあるみたいだけど判らなかった。
私はテキストファイルにログを吐き出すマクロを作っています。

まるぱ 2008/02/19(火) 11:45:41
[[解決]]
仕様なんですね。。。
私の環境では395前後で一発目が飛びが発生するので、
300回おきにウェイトを入れると発生しなくないました。

ファイル出力もやってみましたが、飛びが発生せず、
正しく出力されていました。

今日の夜はゆっくり寝れそうです。

通りすがりさん、たいちうさん
ありがとうございました。

tetrapod 2008/02/19(火) 11:57:33
要するに IDE (Visual Studio 6.0) の Debugger の表示が遅いだけなわけで
それ以外の OutputDebugString を受け取るツールを使えばよいわけだ
sysinternals の DebugView でも使えばいい
http://technet.microsoft.com/ja-jp/sysinternals/d46b4037-88ae-41d7-a41c-
9660d7d96cf2(en-us).aspx

# Silverlight をダウンロード汁ってうるさいなーなんとかならんのかな

a 2008/02/24(日) 00:39:55
…既に回答があるのに駄目押しで書き込む必要は無いのでは?

まあまあ、 2008/02/27(水) 12:05:56
別の解法提示をして下さるなんて、有り難いじゃないですか〜。

但し 知識をひけらかす為の、こじつけ情報が多いですが...。

まあまあ、 2008/02/27(水) 12:08:22
あ、このスレッドではないですよん。他のスレッドで、の意。

古いスレッドには追加発言できません。