ページ 11

boost unit_testでのエラー

Posted: 2011年8月26日(金) 17:30
by chibago
皆様、お世話になっております。
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コンテナを使っておりますが)の範囲外の参照
などのエラーかと思いますが、実は、このプログラム自体は実行時にエラーを吐き出す
ときと吐き出さないときがあります。(同じ実行ファイルで、外部の入力等に依存しません。)

問題のあるプログラムに関しては、複雑な継承等を行っているため、問題部分の特定も処理の概要
の抽出もできないことから、示すことはできませんがアドバイスをいただければたすかります。

どのようなアプローチでデバッグすればよいか、この様な事象を引き起こす考えうる原因
などを教えていただければ助かります。

漠然としていて大変申し訳ありませんが、
ご意見をお寄せ下さい。

Re: boost unit_testでのエラー

Posted: 2011年8月26日(金) 17:48
by softya(ソフト屋)
環境を明示してもらわないと皆さん答えづらいと思いますよ。
それとデバッガを使ってaccess violationで止めれないのですか?

Re: boost unit_testでのエラー

Posted: 2011年8月26日(金) 17:57
by chibago
softyaさん、
ご意見ありがとうございます。
ご指摘ごもっともです。

環境はfedora15 , gcc4.6 boost1.46です。

デバッガは使ったことが無いので勉強したい
と思います。

Re: boost unit_testでのエラー

Posted: 2011年8月26日(金) 18:45
by softya(ソフト屋)
基本はGDBを使うのですがコマンドだと使いづらいのでemacsから使うか、フロントエンドのDDDなどを使います。

「プログラムのデバッグ」
http://www.cse.kyoto-su.ac.jp/~oomoto/l ... dex-j.html

gcc/g++でC++&boostの組み合わせでデバッグしたことがないので、-gオプション以外に必要なものが有るかどうか不明です。

Re: boost unit_testでのエラー

Posted: 2011年8月26日(金) 18:59
by chibago
softyaさん
アドバイスありがとうございます。
GDBで頑張って見ようと思います。

自分でもネットで調べましたが、
mudflapというのが便利そうでしたので試してみましたが
以下のようなエラーが出ました。
terminate called after throwing an instance of 'St9bad_alloc'
what(): std::bad_alloc

プログラムのどこが悪いのか指摘してくれると期待していたのですが、
それ以前の問題のようです。

GDBを使って見ようと思います。

Re: boost unit_testでのエラー

Posted: 2011年8月26日(金) 19:47
by chibago
dddを起動しようと思ったのですがXがハングしてしまいました。

そのため、他のPCでやってみたのですが、今度は全く
エラーが出ないと言う状態になりました。

解決と言っていいものではないのですが、
一応、解決ということに致したいと思います。

PC間の環境の違いとしては64-32bit機(問題が発生したのは64)
ぐらいです。

アドバイスありがとうございました。