皆様、お世話になっております。
boost unit test(C++全般の問題かもしれませんが)の実行で原因不明のエラーに悩まされています。
エラーは以下のようなものです。
Running 1 test case...
unknown location(0): fatal error in "mytest": memory access violation at address: 0x01995890: invalid permissions
おそらく、配列(私はvectorなどのSTLコンテナを使っておりますが)の範囲外の参照
などのエラーかと思いますが、実は、このプログラム自体は実行時にエラーを吐き出す
ときと吐き出さないときがあります。(同じ実行ファイルで、外部の入力等に依存しません。)
問題のあるプログラムに関しては、複雑な継承等を行っているため、問題部分の特定も処理の概要
の抽出もできないことから、示すことはできませんがアドバイスをいただければたすかります。
どのようなアプローチでデバッグすればよいか、この様な事象を引き起こす考えうる原因
などを教えていただければ助かります。
漠然としていて大変申し訳ありませんが、
ご意見をお寄せ下さい。
boost unit_testでのエラー
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: boost unit_testでのエラー
環境を明示してもらわないと皆さん答えづらいと思いますよ。
それとデバッガを使ってaccess violationで止めれないのですか?
それとデバッガを使ってaccess violationで止めれないのですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
chibago
Re: boost unit_testでのエラー
softyaさん、
ご意見ありがとうございます。
ご指摘ごもっともです。
環境はfedora15 , gcc4.6 boost1.46です。
デバッガは使ったことが無いので勉強したい
と思います。
ご意見ありがとうございます。
ご指摘ごもっともです。
環境はfedora15 , gcc4.6 boost1.46です。
デバッガは使ったことが無いので勉強したい
と思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: boost unit_testでのエラー
基本はGDBを使うのですがコマンドだと使いづらいのでemacsから使うか、フロントエンドのDDDなどを使います。
「プログラムのデバッグ」
http://www.cse.kyoto-su.ac.jp/~oomoto/l ... dex-j.html
gcc/g++でC++&boostの組み合わせでデバッグしたことがないので、-gオプション以外に必要なものが有るかどうか不明です。
「プログラムのデバッグ」
http://www.cse.kyoto-su.ac.jp/~oomoto/l ... dex-j.html
gcc/g++でC++&boostの組み合わせでデバッグしたことがないので、-gオプション以外に必要なものが有るかどうか不明です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
chibago
Re: boost unit_testでのエラー
softyaさん
アドバイスありがとうございます。
GDBで頑張って見ようと思います。
自分でもネットで調べましたが、
mudflapというのが便利そうでしたので試してみましたが
以下のようなエラーが出ました。
terminate called after throwing an instance of 'St9bad_alloc'
what(): std::bad_alloc
プログラムのどこが悪いのか指摘してくれると期待していたのですが、
それ以前の問題のようです。
GDBを使って見ようと思います。
アドバイスありがとうございます。
GDBで頑張って見ようと思います。
自分でもネットで調べましたが、
mudflapというのが便利そうでしたので試してみましたが
以下のようなエラーが出ました。
terminate called after throwing an instance of 'St9bad_alloc'
what(): std::bad_alloc
プログラムのどこが悪いのか指摘してくれると期待していたのですが、
それ以前の問題のようです。
GDBを使って見ようと思います。
-
chibago
Re: boost unit_testでのエラー
dddを起動しようと思ったのですがXがハングしてしまいました。
そのため、他のPCでやってみたのですが、今度は全く
エラーが出ないと言う状態になりました。
解決と言っていいものではないのですが、
一応、解決ということに致したいと思います。
PC間の環境の違いとしては64-32bit機(問題が発生したのは64)
ぐらいです。
アドバイスありがとうございました。
そのため、他のPCでやってみたのですが、今度は全く
エラーが出ないと言う状態になりました。
解決と言っていいものではないのですが、
一応、解決ということに致したいと思います。
PC間の環境の違いとしては64-32bit機(問題が発生したのは64)
ぐらいです。
アドバイスありがとうございました。