お世話になっております。 ■環境変数CPPFLAGSについて
・autogen.shに環境変数を渡してビルドした結果ですが、config.statusは S["CPPFLAGS"]="-D_DEBUG" となっているのですが結果的にReleaseモードになっている様です。 ◆確認用コード(vcl\source\app\svmain.cxx) (中略) #if OSL_DEBUG_LEVEL > 0 #include <typeinfo> #include "rtl/strbuf.hxx" #endif // free.toolcreator add start #ifdef _DEBUG #pragma message("######################################DEBUG MODE######################################") #else #pragma message("######################################RELEASE MODE######################################") #endif // free.toolcreator add end using ::rtl::OUString; using namespace ::com::sun::star; (以下略) ◆確認結果(ビルド実行結果) (略) [build MOD] connectivity [build CHK] sot ######################################RELEASE MODE###################################### [build LNK] Library/ivcl.lib ライブラリ C:/cygwin/home/test/Debug/libreoffice-4.0.3.3/workdir/ wntmsci14.pro/LinkTarget/Library/ivcl.lib とオブジェクト C:/cygwin/home/test/Debug/libreoffice-4.0.3.3/workdir/ wntmsci14.pro/LinkTarget/Library/ivcl.exp を作成中 (以下略) ※dmake\Makefileに、 CPPFLAGS = と定義されているため、もしかしたらundefされているかもしれません(未確認です)。 ※メイクファイルを追おうとしたのですが、_DEBUGを定義している所を別に見つけたので、 そちらを先に確認しようと思います。 ■gb_COMPILERDEFSへの追加について ・gbuild.mkに以下の様なコードを見つけました。 (略) gb_GLOBALDEFS := \ -D_REENTRANT \ -DOSL_DEBUG_LEVEL=$(gb_DEBUGLEVEL) \ -DSUPD=$(UPD) \ $(gb_OSDEFS) \ $(gb_COMPILERDEFS) \ $(gb_CPUDEFS) \ # This is used to detect whether LibreOffice is being built (as opposed to building # 3rd-party code). Used for tag deprecation for API we want to # ensure is not used at all externally while we clean # out our internal usage, for code in sal/ that should be used only internally, etc. gb_GLOBALDEFS += \ -DLIBO_INTERNAL_ONLY \ ifeq ($(gb_ENABLE_DBGUTIL),$(true)) gb_GLOBALDEFS += -DDBG_UTIL \ ifneq ($(COM),MSC) gb_GLOBALDEFS += -D_DEBUG \ endif endif (以下略) ※多分ifneq ($(COM),MSC)ではなくifeq ($(COM),MSC)が正しいと思われるため、 ここを修正してビルドしてみます。 以上です。 2013年8月4日 15:05 山田太郎 <free.toolcrea...@gmail.com>: > > 茂木さん、いつも詳細なご回答ありがとうございます。 > > ■--enable-dbgutilについて > > ・ChangeLogに「--enable-dbgutil doesn't cause -D_DEBUG any more」と記載されていました。 > 英語はよくわからないので解釈間違ってるかもしれませんが、恐らく--enable-dbgutilを使用 > しても -D_DEBUGは有効にならない様ですね。 > > ■環境変数CPPFLAGSについて > > ・autogen.shのオプションに環境変数が渡せた事を忘れていました。以下の設定で、現在ビルドを > 行なっています。結果は後ほどご報告させて頂きます。 > > > ◆autogen.shに渡したパラメータ(autogen.lastrun) > --disable-activex > --disable-atl > --with-nss-build-tools=/cygdrive/c/mozilla-build > --with-ant-home=D:\apache-ant-1.9.0 > --without-junit > --with-cl-home=C:\PROGRA~2\MICROS~2.0\VC > --without-help > --without-myspell-dicts > --enable-debug > --with-lang=en-US ja > CPPFLAGS=-D_DEBUG > > ■外部の依存ライブラリへの影響について > > ・「外部の依存ライブラリ」がExternalモジュールを指しているとしてご回答させて頂きます。 > 各Externalモジュールのメイクファイル(ExternalProject_モジュール名.mk)は以下の様に > なっています。 > ifeq ($(VCVER),110) > (中略) > && MAKEFLAGS= MSBuild.exe ソリューションファイル名またはvcxprojファイル名 > /t:Build /p:Configuration=Release /p:PlatformToolset=v110 \ > (以下略) > つまり常にReleaseモードでビルドされます。 > 全てDebugモードでビルドしたい所ですが、とりあえずExternalモジュールはRelease > モードのままでビルドしています。 > ※ /p:Configuration=Debugにすると、さらにMakefileの修正 > (例えばpython3モジュールの場合、ExternalPackage_python3.mkのライブラリ名やlib名 > に_dを付加する必要あり) > が必要となりますし、過去に試してみたのですが、Externalモジュールがビルドに失敗して > しまいます(例えばpython3モジュールの場合LO_lib/python3_d.dllやLO_lib/python3_d.libが > 無いため失敗します)。 > > 影響が有るか無いかについては、後ほどご報告させて頂きます。 > > ■gb_COMPILERDEFSへの追加について > > ・こちらも後でトライしてみます。 > > ■メモリリークチェック方法について > > ・教えて頂いたURLに記載の内容を1つずつ試してみます。 > ※結果報告に時間が掛かるかもしれませんがご容赦願います。 > > ■wineの使用について > > ・こちらも後でトライしてみます。現在LibreOfficeのカスタマイズ案件の対応中なのですが > wineでの検証結果でクライアント様が納得するか不安なので、最終手段として検証 > してみます。 > > 以上です。 > > > > > 2013年8月3日 22:39 Isamu Mogi <wiz.satur...@gmail.com>: > > > > > 茂木です。 > > > > > ■不明点1 > > > > 環境変数CPPFLAGSに当該マクロを書いて、configureし直しでできます。ただ、 > > 確認はしていませんが外部の依存ライブラリまで影響がいきそうな気がします。 > > それが嫌な場合はsolenv/gbuild/platform/com_MSC_defs.mkの40行目付近 > > gb_COMPILERDEFSに手動で追加するのが良いと思います。自動で付加する機能が > > みつかればそっちが良いのですが、僕は見つけられなかったです。 > > > > > ■不明点2 > > > > ここで聞くよりstackoverflowを見るほうがよさそうです。 > > http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows > > > > valgrindが得意なら、下記コマンドを使うのが良いと思います。 > > > > valgrind --trace-children=yes wine soffice.exe > > > > > > (2013/08/02 17:14), 山田太郎 wrote: > > > お世話になっております。 > > > > > > 不明点が2点あり、ご存知の方はご回答をお願い致します。 > > > > > > ■不明点1 > > > ・メモリリークを検出するために、下記の「ビルド環境」に記載の環境で日本語版LibreOffice4.0.3.3を > > > ビルドしたのですが、_DEBUGが有効になっていない様です。 > > > どなたか解決方法をご存知の方いらっしゃいますでしょうか? > > > ※この不明点の質問意図はmsvcrtd.dllを使用したメモリリークチェックを実施する際に_DEBUGが > > > 有効である必要があるために質問させて頂いております。 > > > > > > ■不明点2 > > > ・Windows環境で、LibreOfficeのメモリリークを検出する方法(どの行でnewまたはmalloc()した > > > メモリが解放されていないかを知る方法)をご存知の方いらっしゃいましたら > > > ご回答をお願い致します。 > > > ※Linux環境であればvalgrindで検出出来るのですが、valgrindはcygwinに対応して > > > おりません。 > > > ※WinDbgやApplication Verifier、パフォーマンスモニター、Performance Analyzer、 > > > Xperf等も試してみたのですが、使い方に問題があるせいなのか不明ですが > > > リークを検出できませんでした。 > > > > > > ■ソースファイル > > > http://ja.libreoffice.org/download/?type=src&version=4.0.3からダウンロードした > > > バージョン4.0.3.3ソースファイル > > > > > > ■ビルド環境 > > > OS:Windows7(64bit) > > > Cygwin:1.7.18(0.263/5/3) > > > コンパイラ:Visual Studio 2012 Express for Desktop > > > make:LOパッチが当てられたGNU make 3.82 > > > http://dev-www.libreoffice.org/bin/cygwin/make > > > > > > ■autogen.shに渡したパラメータ(autogen.lastrun) > > > --disable-activex > > > --disable-atl > > > --with-nss-build-tools=/cygdrive/c/mozilla-build > > > --with-ant-home=D:\apache-ant-1.9.0 > > > --without-junit > > > --with-cl-home=C:\PROGRA~2\MICROS~2.0\VC > > > --without-help > > > --without-myspell-dicts > > > --enable-debug > > > --enable-dbgutil ←これが有効な場合、_DEBUGが有効になると考えていたのですが、だめでした。 > > > --with-lang=en-US ja > > > > > > > > > 以上、宜しくお願い致します。 > > > > > -- Unsubscribe instructions: E-mail to discuss+unsubscr...@ja.libreoffice.org Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/ja/discuss/ All messages sent to this list will be publicly archived and cannot be deleted