トップページ > 記事閲覧
MinGW4.8.1用がgdbで中断
名前:溶媒 日時: 2014/07/16 03:06

MinGW4.8.1でビルドし、gdbから実行しようとしたところ、 終了直前にSegmentation faultが発生し、中断してしまいます。 gdbを使わずに直接実行した場合にはそのような事は起こりませんでした。 実行環境や出力内容は以下の通りです。 OS: Windows8.1 64bit MinGW: MinGW4.8.1 (ttp://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-posix/dwarf/ のx32-4.8.1-release-posix-dwarf-rev5.7zを使用) ライブラリ: Dxライブラリ3.12a Gnu C++用内の"プロジェクトに追加すべきファイル_GCC(MinGW)用\4.8.1"内のファイル およびライブラリリストの末尾に-lgdi32を追加 プログラム: "Dxライブラリの使い方"の画面に点を打つプログラムをウィンドウモードで起動するようにしたもの gdbの出力: (略) warning: 5254: warning: DirectInput 関連の終了処理... 完了 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 7592.0xf4c] 0x10003595 in RFBU06!DllGetClassObject () from C:\WINDOWS\SysWOW64\RFBU06.dll (gdb) よろしくお願いします。
メンテ

Page: 1 |

Re: MinGW4.8.1用がgdbで中断 ( No.1 )
名前:管理人 日時:2014/07/16 19:51

手元の最新版で x32-4.8.1-release-posix-dwarf-rev5.7z を使用して コンパイルした実行ファイルを gdb を介して実行してみましたが ご報告いただいたエラーは発生しませんでした 私と溶媒さんのコンパイル、実行の手順が異なることによる結果の違いかもしれませんが、 もしかしたら最新版では直っている可能性もありますので、よろしければこちらの 暫定最新版をお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.2 )
名前:溶媒 日時:2014/07/18 03:19

ありがとうございます。 暫定最新版でコンパイルを試みた所、はじめは undefined reference to `TIFFClientOpen' のようなエラーが出て失敗していたのですが、 libtiff.aというファイルが追加されていたので、ライブラリリストに-ltiffを追加したらコンパイルできました。 しかし、gdbでの終了時にやはり以下のように表示されて中断してしまいました。 (略) warning: 4807: warning: Direct3DDevice9 の解放 2 warning: 4935: warning: d3d9.dll の解放 1 warning: 4992: warning: DirectInput 関連の終了処理... 完了 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 7192.0x1790] 0x10003595 in RFBU06!DllGetClassObject () from C:\WINDOWS\SysWOW64\RFBU06.dll (gdb)
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.3 )
名前:管理人 日時:2014/07/20 05:27

すみません -tiff についてお伝えするのを忘れていました そして・・・駄目でしたか・・・ 色々試してみたのですが、私の環境では発生しません 私の環境で作成した実行ファイルがエラーが発生しないものなのか、 それとも環境の違いでエラーが発生しないのかを確認したいと思いますので よろしければ私の環境で x32-4.8.1-release-posix-dwarf-rev5.7z を使用してコンパイルした 『画面中心に点を打つプログラムをウインドウモードで起動するようにしたプログラム』を 溶媒さんの環境で gdb を使用して実行して、同様のエラーが発生するかご確認いただけないでしょうか? m(_ _;m https://dxlib.xsrv.jp/temp/DrawPixel.zip
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.4 )
名前:溶媒 日時:2014/07/20 22:42

上げていただいたプログラムをgdbで実行してみましたが、 同様にエラーが発生してしまいました。 また、gdbを使わないで実行すると、 管理人さんが作られたプログラムだと、Log.txtの DirectInput 関連の終了処理... 完了 という行の後(gdbで中断してしまう箇所の直後)に kita 0 kita 1 という行がいくつも続くのですが、 私が作ったプログラムのログにはありませんでした。 何か関係あるのでしょうか? (DrawPixel.exeのログ) (略) 1772:DirectInput 関連の終了処理... 完了 3787:kita 0 3788:kita 1 3789:kita 2 3789:kita 3 3790:kita 4 3791:kita 5 3801:kita 6 3801:kita 7 3806:ウインドウを閉じようとしています 3812:ウインドウが破棄されようとしています 3813:ャtトを終了する準備が整いました 3882:kita 8 3883:kita 9 3883:kita 10 3884: 3885:Alloc memory dump 3885: Total size:0(0.000kb) Alloc num:0 3886: (私が作成したプログラムのログ) (略) 1716:DirectInput 関連の終了処理... 完了 3740:ウインドウを閉じようとしています 3744:ウインドウが破棄されようとしています 3745:ャtトを終了する準備が整いました 3813: 3813:Alloc memory dump 3813: Total size:0(0.000kb) Alloc num:0 3814:
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.5 )
名前:管理人 日時:2014/07/20 23:37

私の手元で作成した実行ファイルでもエラーが発生しましたか・・・ 「kita 数字」は、今回のデバッグ用に埋め込んだ出力です gdb実行でエラーが発生した際は「kita 数字」の出力がされていなかった ということでしょうか? となりますと、kita 0 を仕込んだ位置より前にエラーが発生している ということになりますね・・・ 前回の kita 0 の位置より前に kita の出力を追加したものをアップしましたので、 よろしければこちらを gbd を介して実行して、エラー時のログを教えて頂けないでしょうか? https://dxlib.xsrv.jp/temp/DrawPixel2.zip
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.6 )
名前:溶媒 日時:2014/07/21 02:09

DrawPixel2をgdbを介して実行してみました。 以下のログが表示されるまで実行された後、前と同じくSegmentation faultが起きて中断しました。 gdbを介さない場合はこの後にkita18、19と続いて実行されているようです。 0:システムの情報を出力します 4: DXライブラリ Ver3.12b 14: 論理プロセッサの数 : 8 22: OS Windows8 ( Build 9200 ) 33:COMの初期化... 成功しました 85:メモリ総量:8071.28MB 空きメモリ領域:4971.31MB 96:タイマーの精度を検査します 113:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 156: パフォーマンスカウンターを使用します タイマー精度 : 2338.450000 KHz 167: ャtトの二重起動検査... 二重起動はされていませんでした 176:ウインドウクラスを登録します... 登録に成功しました 182:ウインドウモード起動用のウインドウを作成します 190:ウインドウの作成に成功しました 195:ウインドウを侮ヲします 205:IMEを無効にしました 248:ウインドウスタイルをウインドウモード用に変更します... 完了 317:DirectInput関係初期化処理 323: XInput DLL の読み込み中... 成功 342: DirectInput7 の取得中... 成功 510: 引き続き初期化処理... 初期化成功 570: kita 11 576: kita 12 582: kita 22 587: kita 23 592: ジョイパッドの初期化... 611: 入力装置を見つけました 655: デバイスの登録名:BUFFALO BSGP1203 Series 673: デバイスの製品登録名:BUFFALO BSGP1203 Series 928: ジョイパッドの追加は正常に終了しました 940: ジョイパッドの初期化は正常に終了しました 953: マウスデバイスの初期化... 初期化成功 967: キーボードデバイスの初期化... 初期化成功 982:DirectInput 関連の初期化は正常に終了しました 1092:XAudio2 の初期化を行います 1143: XAudio2_8.dll を使用します 1150: XAudio2 インターフェースの取得と初期化を行います.... 成功 Ver2.8 1327:XAudio2 の初期化は正常に終了しました 1456:DirectDraw オブジェクトの取得を行います.... 成功 1519:引き続き初期化処理... 初期化に成功しました 1594:IDirect3D9Ex オブジェクトを取得します.... 成功 1603:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 1990:成功 1993:Driver:igdumdim32.dll Description:Intel(R) HD Graphics 4000 1999:画面のフォーマットは D3DFMT_X8R8G8B8 です 2005:16bit Zバッファフォーマットは D3DFMT_D16 です 2011:24bit Zバッファフォーマットは D3DFMT_D24X8 です 2017:32bit Zバッファフォーマットは D3DFMT_D24X8 です 2022:16bit カラーフォーマットは D3DFMT_R5G6B5 です 2027:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 2032:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 2039:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2046:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 2054:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2062:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 2066:DXT2テクスチャフォーマットはD3DFMT_DXT2 です 2091:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 2096:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 2100:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 2117:描画用 16bit カラーフォーマットは D3DFMT_R5G6B5 です 2122:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 2129:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2139:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 2149:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 2161:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 2171:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です 2180:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 2189:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です 2197:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です 2206:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 2215:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 2223:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 2232:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 2241:一度に描画できるプリミティブの最大数:8388607 2246:対応している最大頂点インデックス:16777215 2249:同時にレンダリングできるバッファの数:4 2253:最大テクスチャサイズ 幅:8192 高さ:8192 2256:テクスチャステージテンポラリレジスタ:使用可 2260:減算合成のハードウェア対応:ネイティブ 2263:ハードウェア頂点シェーダーバージョンコード:300 2267:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 2273:ピクセルシェーダーバージョンコード:300 2371:バックバッファロック転送の時間:27060nsec 一時的な描画可買oッファを使用した転送の時間:1170nsec 2380:バックバッファロックを使用しません 2383:Zバッファを作成します.... 成功 4285:プログラマブルシェーダーを使用します 4344:フォントの初期化を行います 4348:フォントの初期化は正常に終了しました 4366:文字コードバッファの初期化を行います... 完了しました 6371:フォントの初期化を行います 6375:フォントの初期化は正常に終了しました 6397:Direct3DDevice9 の解放 2 6533:d3d9.dll の解放 1 6596:DirectInput 関連の終了処理... 完了 6599:kita 11 6601:kita 12 6603:kita 13 0 6604:kita 14 0 6605:kita 15 0 6607:kita 16 0 6608:kita 17 0
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.7 )
名前:管理人 日時:2014/07/21 15:12

お試しいただきありがとうございます kita 17 までは出力されているとのことで、エラーが発生している箇所が分かりました 私の環境ではエラーが発生しないので直せたかどうかは分かりませんが エラーが発生しないように手を加えてみましたので、何度も申し訳ありませんが よろしければこちらを再度 gdb を介して実行してみてください m(_ _;m https://dxlib.xsrv.jp/temp/DrawPixel3.zip
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.8 )
名前:溶媒 日時:2014/07/21 17:43

何度もありがとうございます。 DrawPixel3をgdbを介して実行してみましたが、 前と同様にkita17まで表示されて中断してしまいました。
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.9 )
名前:管理人 日時:2014/07/21 21:37

お試しいただきありがとうございます 駄目でしたか・・・ kita が出力されている状況を教えて頂いて分かった「エラーが発生している箇所」は ジョイパッドを扱うための機能の後始末をする API を呼んでいる所です 呼び出すAPIには引数も無くただ呼んでいるだけなので、それでエラーが発生してしまうとなると DXライブラリの側ではこれ以上対応のしようが無い状態です ( ジョイパッドを扱っている処理で一部マニュアルで禁止されているコードがあったので それが原因かと思い修正したものが No.7 の DrawPixel3.zip だったのですが、違ったようです ) 原因は gdb の誤動作か、ジョイパッドのドライバに何かがあるのか、それともDXライブラリの プログラムに何か問題があるのかはわかりませんが、とりあえず現状これ以上調べるのは難しそうです 申し訳ありませんが、どうしても gdb を介して動作させた際にエラーが発生するのを 無くしたいとのことでしたら、DxLib_Init の前に SetUseDirectInputFlag( FALSE ) ; を 実行してみてください、ジョイパッドを扱うに当たって DirectInput を使用しなくなるので エラーも発生しなくなると思います m(_ _;m
メンテ
Re: MinGW4.8.1用がgdbで中断 ( No.10 )
名前:溶媒 日時:2014/07/22 00:28

ジョイパッドを扱う機能が関わっているとの事なので、 USB接続していたジョイパッド(Baffalo BSGP1203)を確認したところ、 Windows8に対応しておらず、これを抜いたらエラーが収まりました。 また、SetUseDirectInputFlag( FALSE ); を入れた状態だとジョイパッドが刺さっていてもエラーは起こりませんでした。 別のジョイパッドでWindows8に対応している物(BSGP801)を接続してもエラーは発生しませんでしたので、 Windows8に対応していないジョイパッドを使っていたのが原因だったようです。 お手数をおかけしました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存