• 締切済み
  • 暇なときにでも

DOS窓の数値計算でエラーが出たり出なかったりします

Windows98でVC6を使って,DOS窓のみで実行する数値計算(シミュレーション)のプログラムをデバッグ中です.「不正な処理.....」のエラーに対して,同じexeファイルを別のパソコン(windows98機)2台で実行させたところ,2台ともエラーが出ませんでした.ソースをUNIX機およびNT機に持って行ってコンパイル実行してもエラーが出ませんでした. こんな現象がなぜ生じるのか理解に苦しんでいます.CPUはPentiumII450MHz,メモリは128MBです. しかも, ・デバッグ用にprintf文を随所に入れると,正常動作しますし, ・逆に始めからある進行モニタ用のprintf文をコメントアウトしただけでも正常動作します。 ヒントとか,以前に似たような経験をされた方がいましたら,何でもお教えくだされば幸いです。

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.5

補足読みました。 メモリ管理方法に違いが有りますので、一概にWindowsが悪いとは言い切れませんね。 数値計算だと、計算結果を入れる変数がオーバーしてるとか、関数に渡すパラメータや 戻り値の不一致とかが考えられますね。 3000行といっても、関数ごとに切り出してテストランすればたいした量じゃないと 思うんですけど・・・ それと1台だけってことは、なんか他の2台のWindows機と違ってるところがないです かね?タイミングの問題もあるのかなぁ・・ 関係無いとは思うけど、Windowsを再インストールしてみるとか・・・問題の切り分け にはなると思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ojopuさん,shigatuさん何度も御回答有難う御座います。 未だ源をつかめていないのですが,何故か,安定して?エラーが出るようになりました。やはりエラーが出ると言うことは,一方的にシステムのせいにして済ますわけには行かないので,更に追いかけています。最終的に,原因が特定できましたら,また状況をご報告します。なお補足ですが,エラーの出るWindow機はWindow98で,正常に終了するのはWindow98 SecondEditionです.それと正常の方は2台ともノートパソコンです。この程度の違いです。 では,しばらく追跡をしてみます。有難う御座いました。

  • 回答No.4
  • ojopu
  • ベストアンサー率0% (0/0)

3番の再質問の件です。 とりあえずは変数宣言を厳密に行い(shortかlongか、signedかunsignedか等)、些細なコンパイルエラーを消していくのが良いかと思います(1から作る場合はこういうエラーが出ないように組みます)。 この手のエラーはエンバグ部分と停止部分が違う場合が殆どですのでソースを見るかより厳密なデバッガを使うのが良いのでしょう。 なお、処理系により変数の内部構造が違うケースもありますので「UNIXの仕様としては正しい」ソースも有りうるでしょう。構造の違いに関してはVCのオンラインマニュアルにもある程度書かれていたと記憶しています(3年程前の記憶ですが^^;)。 蛇足ですがどの処理系でも動くソースを書くのは難しいですが偶発性に拠らない正確なソースを書けるように成ると思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.3

VCといっても、コンソールアプリってことはいわゆるCで書かれているんですよね? ojopuさんもおっしゃってる通りprintfで動作が変わるって事は、メモリ管理部分で なんかバグが潜んでいるんでしょうね。 領域確保が正しく行われているかどうか、オート変数がちゃんと初期化されているか 実体とポインタが正しく扱われているかなんかがチェックポイントでしょうね。 あとは、printf入れることで最適化の方法が変わったりしますので、それによって バグが出る場合もありますね。

共感・感謝の気持ちを伝えよう!

質問者からの補足

皆さん,アドバイス有難う御座います。そして,shigatsuさん,前回のSCSIの時も有難う御座いました。あれ以来全くハングアップしなくなりました。 さて,今回頂きましたアドバイスについて,重ねてお聞きしたいのですが, ・今まではprintf文でバグを追っかけていたのですが,今回のようにこれが使えない状況では,リストを眺めるしか手は無いのでしょうか?3000行位なので,ちょっと気が重いです。 ・ソースファイルをUNIXマシンでコンパイル実行すると正常に完了するのですが,ソースファイルは正しくて,使用しているWindows機の方に問題がある,と言ってしまってはいけないでしょうか?

  • 回答No.2
  • ojopu
  • ベストアンサー率0% (0/0)

printfの有無で動作が異なる場合は各変数のメモリ確保、アクセス範囲をチェックした方が良いです。 まさかないとは思いつつも私も過去同じような現象発見、解決したbugに見舞われた事が有りましたので念の為....

共感・感謝の気持ちを伝えよう!

  • 回答No.1

(1)プログラム実行をWINDOWSに検知させない設定にする。 (2)DOSで動かすプログラムの優先度を最大にする。 など、やってみられました?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • DOSプロンプトの動作が変

    F-BASICと言うソフトで、DOSコマンドを実行しています。 「MD」・「COPY」等なんですが、1台のPCが変な動作をするようになりました。 現象 PCで実行すると、タスクバーに「DOSプロンプト」が表示になります。 普通なら、影で実行し終了したら消えるのですが、実行している様子がありません(実際に動いていません) タスクバーの「DOSプロンプト」をクリックすると、画面にDOSの画面が出て動き出します。 他のPCでは問題はありません スキャンディスクの完全は実行しましたが、改善されません OSは98SEです。 よろしくお願いいたします。

  • MicrosoftVisualC++2010エラー

    学校でC言語を習っているので家でもやろうと思ってMicrosoft Visual C++ 2010 Expressをインストールしました。 取りあえず本を読みながら、プログラムを書いていたのですが、3個目くらいのプログラムを実行(デバッグなしで開始)したら、「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」というエラーが出てきて、実行できませんでした。 (はいを押すと、指定されたファイルが見つかりませんと出てきます。) しかも、前に書いたプログラムまで、実行したらそのメッセージが出るようになりました。 一応実行してエラーが出たプログラムも書いておきます。 #include <stdio.h> int main (void) { printf("こんにちは\n"); printf("さようなら\n"); return (0); } 原因がわかりません。 どなたかご教授願います。

  • For文について (DOS起動)

    テキストファイルの内容を1行ずつ取り出したいと思い、以下のコマンドを実行しました。  for /f %i in (test.txt) do echo %i このコマンドをWin7及びXPのOS上コマンドプロンプトで実行した場合は問題ありませんが、MS-DOS6.22やWin98、WinMEのDOS起動ディスクなどの場合、Syntax errorとなります。 ※test.txtの内容は、TABやSpaceなし、半角英数字のみの文字列で4行程度保存しています。 この為、DOS起動ディスクでは、For文を使えないのかと思い、以下コマンドを実行した所、正常に動作しました。  for %i in (1 2 3 4) do echo %i この事から、For文にてテキストファイルの読み込みが出来ない状況のようです。 どのようにすれば、テキストファイルを読み込む事が出来ますでしょうか。 宜しくお願い致します。

  • エラーまで実行させたい。

    Windows2000(IIS5)にて、ASPの開発をしております。 デバッグする際に、実行時エラーが起こった場合、そこまでの出力などの処理は行いたいと思っております。 しかし、実際には、エラー行数などが出るだけで、 実際の処理は行なわれず、「ページが表示できません」と出てしまいます。 NT(IIS4)の頃は、実行時エラーになった時点までは処理が行なわれていたように思います。 これは、IIS5になった事で、セキュリティ上そうなってしまったのか、IISの設定によって、そのような挙動にする事が可能なのか、ご教授いただければ幸いです。 よろしくお願いいたします。

  • DOSでフォルダごと移動するには

    WindowsNT 4.0を使用しておりまして、 夜間に起動するバッチファイルを作成しております。 1つのフォルダの中に、数個のフォルダに分かれておりまして、1つが数GBあります。 人が使用していない時間帯に、移動をかけたいのですが、 --------------------------------------------- move C:\DIR1 C:\TEMP (DIR1をC:\TEMPフォルダに移動したい) --------------------------------------------- MOVEコマンドで、フォルダの移動を試みたのですが エラーになり、正常に処理してくれません。 自分のクライアント(WindowsXP)では、 問題なく、移動できたのですが NTのDOSコマンドでは、ダメなのでしょうか?? ちなみに、フォルダ以下にあるファイルに対して MOVEコマンドを実行すると、正常に移動できました。 フォルダごと、サブフォルダも含めて 移動したい場合は、どのように記述すれば よろしいのでしょうか?お知恵をお貸しください。

  • printf()がないとエラー

    現在、素因数分解プログラムを作っていて値を確認するために使って いたprintf()を取り除いて完成というところだったのですが、50の 倍数のときにセグメントエラーになり、再びprintf()を付け加えると 正常に動作するという不可解な現象が起きました。 こんな場合は、どんなことが起きていると考えられますか? そして、1回も使ったことがないのでよくわかりませんが、デバッガ を使えば原因がわかるものでしょうか? 回答よろしくお願いします。

  • Config.ntのエラーって?

    ある種のダウンロードしたドライバとかアプリのインストを実行したときに、DOSのコマンドを利用しているのでしょうか 次のようなメッセージが出てエラーとなります 「Config.ntシステムファイルはMS-DOS及びMicrosoft Windowsアプリケーションを実行するのに適していません」 解決方法を検索してみると「\WINDOWS\repair の中にあるconfig.ntを\WINDOWS\sysytem32の中にコピーする」とありましたので実行してみましたが解決できませんでした  解決方法をアドバイスしていただければありがたいです

  • 中国のパソコンでVB6の実行時エラーが発生しました

    実行時エラー -2147467259 (80004005)について教えてください。 VB6.0を使用して作成したアプリケーションを社内で私が実行した時は正常に動作するのですが、 そのアプリケーションを中国に送り、現地で実行したところ、添付の画像のようなエラーが発生してしまいました。 エラーの原因とその対処法を教えていただきたいです。 Access関連のエラーなのかとは想像がつくのですが、中国語の内容が理解できないことに加え、社内ではデバッグをしてもエラーが発生しない為、困ってしまっています。 質問の仕方が上手にできなくて申し訳ありませんが、内容に不明な点がありましたら、おっしゃっていただければ、対応いたします。 よろしくお願いいたします。

  • DOS/V機とMACで無線マウスを共有したいのですが、

    DOS/V機とMACで無線マウスを共有したいのですが、 キーボードは下記のようなものがございますが、マウスでは見当たりません。 無線の方式は問いませんが、そういった機能を持つマウスはございますでしょうか? http://www2.elecom.co.jp/peripheral/full-keyboard/tk-fbp014/index.asp (1)DOS/V (Windows 7) (2)mac mini (Mac OS) (3)mac (windows XP) この3台(ハード的には2台ですが)で共有したいのです。 DOS/V機とMACを同時に起動することもありますので、 1つのマウスで2台誤動作するのは困りますね。 回答をよろしくお願い致します。

  • VB6.0 NTでは動くのにXPではエラー

    初めまして。 現在,VB6.0で作成してあるソフトを現在PC(NT)で動作させているのですが,そのPCが古いため新しいPC(XP)でソフトを動作できるようして欲しいと頼まれました。 しかし,XPでソフトセットアップした後,ソフトを立ち上げようとすると, 「実行エラー76  パスが見つかりません」 とエラーが出てしまいます。エラーコード76についても調べてみたのですが,原因がわからないため詳しい方がいましたら教えていただけますか? また, NTではソフトは立ち上がるので,XPとの互換性の問題なのですか? NTで動くソフトを作ったのは業者なのですが,プログラムを担当した方が退社されていて,プログラムの中身を知ることはできません。