Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


お世話になっております。

■環境変数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.toolcreator@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.saturday@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+unsubscribe@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.