• 締切済み

印刷中に強制終了

VS2008 C++、Win7Pro 上記環境でソフトを開発しています。 あるプログラム(リリースモード)で印刷中に強制終了し、そのままデバッグ(VS Just-In-Timeデバッガ)すると SetViewportOrg内でthisポインタがNULLの状態で停止します。 発生頻度は100%ではなく、5%から30%程度といったところです。 停止するところは必ず上記SetViewportOrg内で、thisポインタがNULLとなっています。 デバッグモードではこの症状は発生しません。 プリンタは3機種試しましたが、いずれでも発生状況は変わりません。 何かアドバイスをいただけたら助かります。

  • mtsm
  • お礼率64% (85/132)

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

デバグモードとリリースモードで違いが出る、という場合、真っ先に疑う点は「変数の初期化」です。 例えば int flag; if(! flag) { 初期化(); } とある場合、デバグモードでは常にflag=0となり、初期化が実行されますが、リリースモードでは、flagの値は不定で、0のときもあればそうでないときもあります。 そのSetViewportOrgに値を設定している箇所を探し、それが実行される条件を調べ、その中に初期化しないで使っている変数が無いか、調べまてみましょう。 コンパイル時に、警告レベルを高く設定するのもよいです。

回答No.1

デバッグモード以外でデバッグをすること自体無理。 デバッグモードであればソースコードの通りの順序で実行されブレークポイントもソースコードの行単位になりますがリリースモードではそのような保証は有りません。

関連するQ&A

  • VS2008 C++ リリースモードでエラー

    表題の環境でMFCベースのプログラムを開発しています。 リリースモードで実行を試したところ、同じようなタイミングで強制終了が発生します。 (おそらく、自前のDLL内で落ちている?) デバッグモードのEXEを直接起動しても、強制終了が発生します。 りかし、VSからリリースモード(当然、デバッグモードも)の実行を行うと、エラーが発生しません。 VSから実行する場合、参照するDLLはVSを使用しない場合とは違うDLLを参照するのでしょうか。 その他、このような状況での対処方法について、アドバイスをいただけませんでしょうか。

  • Visual Studio 2005のJust-in-timeデバッグを完全に停止したい

    こんにちは。Visual Studio 2005をインストールしたところ、以前まで表示されていた「問題が発生したため、○○.exeを終了します。」というようなダイアログが出てこなくなり、代わりにデバッグをするかどうか聞かれるようになりました。このようなJust-in-timeデバッガのダイアログではなく、「問題が発生したため・・」というダイアログを出したいのですが、オプションからJust-in-timeデバッガを無効にしても、プログラムがクラッシュしたときにJust-in-timeデバッガが無効になっているとエラーが出てしまいます。Just-in-timeデバッガを完全に停止する方法はないでしょうか?

  • C#:VS2008について

    現在VS2008C#で開発を行っています。 そこで、デバッグで実行するとSaveFileDialogの表示時に下記のエラーが発生しています。 "OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。Main 関数に STAThreadAttribute が設定されていることを確認してください。 この例外はデバッガがプロセスにアタッチされている場合にのみ発生します。" しかし、EXEで実行した場合上記エラーが発生せず、正常にSaveFileDialogが表示されます。 そこで質問なのですが、デバッグで実行した場合と、EXEで実行した場合では何か違いがあるのでしょうか?また、なぜ上記エラーはデバッグ実行時のみ発生しているのでしょうか?回答よろしくお願い致します。

  • インターネットをやっていると・・・

    最近インターネットをやってたらこんなエラーメッセージが出ました。 --------------------------- エラー --------------------------- ランタイム エラーが発生しました。 デバッグしますか? 行: 19 エラー: 'document.getElementById(...)' は Null またはオブジェクトではありません。 ---------------------------  はい(Y)  いいえ(N) --------------------------- 「はい」を押してみると・・・ --------------------------- Just-In-Time デバッグ --------------------------- 例外 'ランタイム エラー' が スクリプト で発生しました。 この例外をデバッグできるデバッガは登録されていません。JIT デバッグを実行できません。 ---------------------------       OK --------------------------- いいえを押すとエラーメッセージが消えます。 でも、しばらくするとまた現れるようです。 なんか問題でもあるんでしょうか? 解決法お願いします。

  • VB6のデバッガ?強制終了?について

     お世話になります。VB6とアクセスにてデータベースを作成中、動作確認のため実行したところ、「問題が発生したためVBを終了します。」が出現、VCが立ち上がり、   「VB6-MICROSOFT C++[停止]-[混合モード] メッセージボックス出現、 「デバッグ ハンドルされていない例外は VB.EXE(VB6.DLL)にあります。OXC 0000005:Accsee Violation」  となります。   そして、そのVCを閉じると「このコマンドを実行するデバッガを停止します」となります。  懲りずに又実行するとやはり同じです。仕方が無いので、VBの別なプロジェクトを用意して、先程のプログラムを「エラーの原因と思われる箇所を除いて」コピーして実行したところ今度は問題なく動きました。  単にコードの記述間違いならその程度を示すメッセージボックスがでるだけでしたが、VC出現は初めてです。  私なりの対処法で、「別のプロジェクトにもう一度書き直す」で一応はメドがたったようですが、別の対処法があれば御教授御願いします。 また、「明確な原因」がわかるならそれもお願いします。

  • Craving Explorerを起動するとランタイムエラーが出ます

    先程、OKWebのQ&Aを見ててYouTubeの動画をダウンロード出来るフリーソフト「Craving Explorer」をインストールして開いたら、 エラーがでて 「ランタイムエラーが発生しました。  行:4380  エラー:オブジェクトを指定して下さい。」 「はい」をクリックすると 「just-In-Timeデバッグ」のダイアログが出て デバッガを選択して下さい。 可能なデバッガというような窓が出て 「新しいインスタンス Microsoft Script Editor] が表示され、その下に 「現在選択されているデバッガを規定のデバッガに設定します。」 のチェックマークを入れるような案内が出てさらに、その下に 「選択したデバッガを使ってデバッグしますか?」 で「はい」「いいえ」を選択するような事が書いてありますが、 この上記の「現在選択されているデバッガを規定のデバッガに設定します。」にチェックマークを入れて先に進んでも差し支えないのでしょうか?「デバッガ」とか「デバッグ」の意味が分からないので勝手に操作をして不具合が生じてもいけないので質問しました。宜しくお願いします。

  • アカウント入力すると、いつも「Webページエラー」のメッセージが出ます

    アカウント入力すると、いつも「Webページエラー」のメッセージが出ます。 具体的には下記の通りです。 Webページエラー 「このWebページにはエラーが含まれているため、正しく表示されないか、または正常に動作しません。このページをテストしない場合は「いいえ」をクリックしてください。」 □ 今後、このメッセージを表示しない(D) □ Internet Exporeでビルトイン スクリプトデバッガーを使用する(B) はい、いいえ  行599 エラー: 'document.getElementById(...)' は Null またはオブジェクトではありません。 デバッガーを使用するを選択して、はい をクリックすると Just-In-Timeデバッグ 例外’ラインタイムエラー’がスクリプトで発生しました。 この例外をデバッグできるデバッガは登録されていません。JITデバッグを実行できません。 と表示されます。 他のアカウントでは表示されません。 特に動作に変化はないのですが(ただ気がつかないのかもしれません)、表示されないようにすることはできるのでしょうか? もしお分かりになる方がいらっしゃるのでしたら、教えてください。よろしくお願いいたします。

  • VS内で問題ないexeファイルが、単独実行できない

    VC++2010expressで作成したC++のプログラムがあります。VS内から起動した場合には、デバッグモードでもリリースモードでも問題なく作動するのですが、VS外から、アイコンをクリックして起動すると、malloc()したメモリーをfree()したときに作動停止してしまうことがあります。確率は低いですが、正常に作動する場合もあり、また、free()をコメントアウトすると作動停止しなくなります。メモリーの扱いに問題があるのかと思い、malloc()の直後にfree()してみましたが、同様な症状が見られました。どのような原因が考えられるでしょうか。

  • Just-in-Time デバッグていうのが動画変換ソフトを起動させた

    Just-in-Time デバッグていうのが動画変換ソフトを起動させたら表示されてどう対処したらいいですか? 下には[可能なデバッグ]ていうのが出ていて[新しいインスタンス Microsft Script Editcr]表示されています。 現在選択されているデバッガを既定のデバッガに設定します。 ↑ 上記のようなメッセージが表示されます。どうしたらいいですか、教えてください。 よろしくお願いいたします。

  • XPモードでIE6のスクリプトデバッガを使用可能?

    以前WindowsXP上でIE6のWEBアプリを開発していました。 そのWebアプリをWindows7上でデバッグしようと思い、XPモードを起動し、OfficeXPをインストールし、IE6を起動しました。IE6の設定で「スクリプトデバッグを使用しない」のチェックをはずし、IE6のメニューバーの表示 -> スクリプトデバッガ -> 次のステートメントで中断を選択しても、画面に何も表示されず、スクリプトデバッガを使用することができません。 XPモードではスクリプトデバッガは使用できないのでしょうか? 使用できる方法はあるでしょうか? よろしくお願いします。

専門家に質問してみよう