Assertion Failureの時の例外処理はどうすれば? – プログラミング – Home

Assertion Failureの時...
 
通知
すべてクリア

[解決済] Assertion Failureの時の例外処理はどうすれば?


なた
 なた
(@なた)
ゲスト
結合: 20年前
投稿: 12
Topic starter  

VC++6のユーザーです。あるソースをデバッグ→実行で流して、ハングしましたが、止まった箇所がわかりません。一応、実行状態にはありますが、デバッグライブラリからの警告メッセージとして、Debug Assertion Failed  File:fputc Line:45 Expression:str!=NULL と出ており、事実上、プログラムが停止したことになっています。解除するため、中止を押しても、再試行を押しても、無視を押しても、何処が悪いのかわからないのですが、デバッグ→例外処理のオプションをうまく使うことによって、何とか、ハングの箇所をつきとめられないでしょうか? 何か、付属ファイルを忘れかなあ、とも思うのですが、片方のPCでこの現象が出て、もうかたいっぼうのPCで出ていないので、困っております。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

runtime-libraryのソースがインストールしてあればわかります。

ちょいと調べてみましたら:

int __cdecl fputc (
int ch,
FILE *str
)
{
int retval;

_ASSERTE(str != NULL); ←ココ!

なのでfputcに食わせた FILE* が NULL であったことによるassertですね。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 59
 

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200511/05110033.txt
放置せんでね。

適当なとこで改行してください。
みづらいし、回答してくれる人もくれなくなるよ。
(放置も悪い印象を植え付けます。)


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

取り敢えず、改行は大事。
実際、私も最初見る気が失せかけました。

取り敢えず、runtime-libraryのソースはインストールしておいた方が良いです。
今時のPCはHDDが大きいので大して負担にはならないでしょうし。
で、入れておくとassertの内容からソースが追えて原因の特定がやりやすくなります。

>fputcに食わせた FILE* が NULL であったことによるassertですね。
という所からするとfopenした時にエラーチェックしていないのでは?

>(放置も悪い印象を植え付けます。)
御意。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

>>(放置も悪い印象を植え付けます。)
> 御意。

二度と答えてなんかやるもんか って思うもんね。
# 思ってるし。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

ちょっと本題から外れてしまいますが、

> 適当なとこで改行してください。
> みづらいし、回答してくれる人もくれなくなるよ。
これに関しては投稿フォームに一言「自動改行されませんので適宜改行を入れて下さい」と
一言書いてあるといいと思いました。


返信引用
なた
 なた
(@なた)
ゲスト
結合: 20年前
投稿: 12
Topic starter  

みんなに迷惑をかけて申し訳ないです。
携帯から打ってるし。
ところで、ランタイム・ライブラリーのソースの
インストールの仕方はどうするのでしょうか?
VC++6でデバッグしています。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

VC++6インストーラで。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

で、解決したのかしら?

> 携帯から打ってるし。
それがどうした。 だから許せとでも?


返信引用
なた
 なた
(@なた)
ゲスト
結合: 20年前
投稿: 12
Topic starter  

解決です。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

どう解決したのか位は書いといてください。
何が原因でどう対処したかを。
もしかして後でこのスレッドを見る事になるかもしれない人には
何をどう解決したのか書いていないのであまり役に立たないスレッドになります。

まあ、解決案の羅列くらいにはなってますけれどね。


返信引用
\n
 \n
(@\n)
ゲスト
結合: 20年前
投稿: 12
 

> 携帯から打ってるし。
から、

質問の答えさえもらえれば、どう解決したかは打つのめんどくさいし
かかなくていいや。

とでも考えているのでしょうか?
そんなことしていれば、当然誰も回答してくれなくなります。
(自業自得)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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