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 の部分の対応はこれから.