VC6からVC8に換えるとエラーが表示される? – 固定ページ 2 – プログラミング – Home

VC6からVC8に換えるとエラーが表示...
 
通知
すべてクリア

[解決済] VC6からVC8に換えるとエラーが表示される?

固定ページ 2 / 2

え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

wclrp ( 'o') さま、FUKU さま

じょうほうありがとうございます
/EHa、および、SetUnhandledExceptionFilter()は調べてみます


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> そのため、処理を行う実行ファイルが、ハングアップした場合に、
> 終了させるプロセスと、起動していない場合に起動させるプロセスを持っています
これやっているといつかリソース不足でOS自身がハングアップする可能性があります。
いままで起きてないのが偶然だと思えるぐらいです。

> 処理できなくてアプリケーションが落ちてしまった場合、
> そのファイルは処理できなかったかはログに管理されています
う--ん、
なんか重要なことが出来てないような気がします。
>処理できなくてアプリケーションが落ちてしまった場合
 処理できなかった場合、アプリケ-ションは落ちてしまうのでなく、
 異常終了するのが正解です。
 なので、VC8のように異常終了のウインドウが出るほうが正解です。
しかも、アプリケ-ション側で異常終了する前にエラーで正常終了させるべきです。

>># お客さんがここ見てたらどうしましょう?
>特に問題はありません
問題あります。
 「処理的に間に合わなくてアプリケ-ションでエラーで省いている。」

 「処理的に間に合わなくてアプリケ-ションがハングアップして落ちるもしくは
   異常終了する。」
は大きな違いです。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 出しているのはOSというべきでしょうか?

それを分かっていないとは気付かなかった。VC以外でも出るし。
私の↓の説明を見て勘違いも強まってしまったかな?

>・VC8では、異常終了をMSに通知する仕組みが採用されている。

プログラムが異常終了するときは、のんびりとダイアログなんて
出す余裕がないことが多いです。終了したプログラムについて、
正常終了時にされるはずの処理がされてないことに気付くのは
OSでしょう。

きっとこんな感じじゃまいか。

int main() {
// 私は死ぬ前に遺言を書きます ← VC6には無い宣言。

...

// 遺言を書く
return 0;
}

OS:書くって言ってたのに遺言が残ってない!


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> >特に問題はありません
> 問題あります。

例えば
「その程度のリスクならうちは構わないので根本的な解決はしなくていいよ。」
と、お客さんが言っているのならば、このやり取りを見られても構わないのでは?
そのような事情を判断してえ~いちさんが問題ないと書いているのでしょう。

一般論としてならば、おっしゃる通りと思いますが。


返信引用
gak
 gak
(@gak)
ゲスト
結合: 21年前
投稿: 132
 

#include <cstdio>
int main() {
fread((void*)0x8000, 0xffff, 0xffff, (FILE*)0x8000);
return 0;
}

VC++6+sp6, WinXP+sp3 環境で「エラー報告しますか?」ダイアログが出た。
スレの流れが「VC6 はダイアログが出ない」となっている気がしないでもなかったので一
応報告。


返信引用
tani
 tani
(@tani)
ゲスト
結合: 17年前
投稿: 9
 

すみません。C++ 例外しかチェックしていませんでした。
VC6 で main() から throw; すると標準エラー出力には
abnormal program termination
が出ますが、ダイアログは出ませんでした。
VC8 ではダイアログが出ます。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> VC++6+sp6, WinXP+sp3 環境で「エラー報告しますか?」ダイアログが出た。
> スレの流れが「VC6 はダイアログが出ない」となっている気がしないでもなかったので一
> 応報告。

報告ありがとうございます。出ましたか。
昔は出なかったような気がするので、OSが変わったということですね。
という訳で、私の遺言の話は間違いのようです。

ダイアログが出るようになった原因は、シャノンさんが
「シャノン 2008/05/16(金) 12:26:21」で書いてあるとおりですね。


返信引用
麩
 麩
(@麩)
ゲスト
結合: 17年前
投稿: 95
 

>>gak
スタックの破壊とかの場合、呼び出し階層の深さが浅ければ丁度mainからの
return扱いで正常終了するケースとかも有りうるような…
メモリ破壊の場合はただでさえどうなるか未知数の部分がありますし、ライブラリ
の違いで落ち方が変わるのも十分ありうるかなと思います。

>> >特に問題はありません
>> 問題あります。
>お客さんが言っているのならば
本質を理解してそれ言える客ってはたして居るんでしょうか?
メモリ回りだと所謂「任意のコードを実行されるセキュリティホール」の可能性も高
いわけですが…

……まぁ、見つかってない同種バグの可能性考えたら一緒ですね♪


返信引用
tani
 tani
(@tani)
ゲスト
結合: 17年前
投稿: 9
 

VC8 の abort() がダイアログを出すようになったからっていうことは
ありませんかね?
そうだとすると _set_abort_behavior() で動作を変更できるようです。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました