ホーム » 2016 » 6月 » 30

日別アーカイブ: 2016/06/30

2016年6月
 1234
567891011
12131415161718
19202122232425
2627282930  

カテゴリー

アーカイブ

ブログ統計情報

  • 99,504 アクセス


VC 14 exe を XP でデバッグ

昨日リモートデバッグの環境を作っていったが,VC 14 では XP 上のリモートデバッグができない?
VC 11 以降 XP などについて具体的には書かれてない


今回リモートデバッグしようと思ったのは,VC 14 でビルドした exe が XP で実行できないことにあった.
Win 7 などでは問題ない.また,VC 12 などでビルドした exe なら大丈夫.
現象は,exe の起動はできるが 3D モデルを開く時,エラーメッセージも出ずに終了してしまう.


デバッグ版のプロジェクトで以下を設定.
  スタティック ライブラリで MFC を使用する
  Visual Studio 2015 – Windows XP (v140_xp)
ビルドして,リリース版と同様の現象になることを確認.


XP 環境には VC 8 が入っているので,
 デバッグ版 exe をエクスプローラなどから起動し,「ツール」-「プロセスにアタッチ」.
_tstati64 の呼び出しで,errno が 22(EINVAL 引数が無効です)となってしまう.


exe が終了してしまったのは,ファイルサイズが正しく取れなかったための無限ループ.

    bool    v_c_Save    (LPCTSTR pathName,const std::vector text)
    {
        FILE*	ofp = ::Open_File(pathName,_T("wb")) ;
        if (ofp == NULL) {
            return    false ;
            }
        if (text.size() > 0) {
            ::fwrite(&text[0],sizeof(char),text.size(),ofp) ;
            }
        ::fclose(ofp) ;
        if (text.size() > 0) {
            u_64    fSize =F_Stat::GetSize(pathName) ;
            if (fSize == 0) {
                return	v_c_Save(pathName,text) ;
                }
            }
        return  true ;
        }

無限ループにならない様に,ループカウンタを追加.
exe が抜ける現象は解消されて 3D モデルが表示できる様にはなったが,stat の部分の対応はこれから.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.