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


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

■Windows環境のLibreOffice4.0.3.3で_DEBUGを有効にする手順について

・前回ご報告させて頂いた手順に、一部誤りや漏れがあった様です。
_DEBUGを有効にしたい局面の殆どはメモリリークチェックだと思いますので、
訂正した手順は「■Windows環境のLibreOffice4.0.3.3でmsvcrtdを使用したメモリ
リークチェックの方法について」を参照願います。

■Windows環境のLibreOffice4.0.3.3でmsvcrtdを使用したメモリリークチェックの方法に
ついて

・newまたはmalloc()した行番号等はまだ表示出来て居ませんが、メモリリークを
検出する環境が出来ましたので、以下に手順を展開させて頂きます。
※一部調査が必要な項目がまだ残っています。
※茂木さんから教えて頂いた4.1のmsvctrdを有効にするパッチの方法は4.0.3.3では
問題が発生したため、一部パッチの修正内容を変更しています。

◆ステップ1:solenv\gbuild\gbuild.mkの修正
・「ifneq ($(COM),MSC)
gb_GLOBALDEFS += -D_DEBUG \」を
「ifeq ($(COM),MSC)
gb_GLOBALDEFS += -D_DEBUG \」に修正。
・gb_GLOBALDEFS += -D_HAS_ITERATOR_DEBUGGING=0を追加。
※_HAS_ITERATOR_DEBUGGING=0」はboostをVisualStudioのデバッグ
ビルドでビルドすると発生するエラーを回避するためのものです。
詳細は以下のURLを参照願います。
参考URL:
http://social.msdn.microsoft.com/Forums/vstudio/en-US/03087447-620f-402b-9182-0da5ae6bf61f/boostmultiarray-vs2010debug
◆ステップ2:solenv\gbuild\framework\com_MSC_defs.mkの修正
・MDをMDdに変更。
gb_CFLAGS := \
(中略)
-MDd \
(中略)
gb_CXXFLAGS := \
(中略)
-MDd \
(以下略)
◆ステップ3:autoge.shの実行
・--enable-dbgutilを付加して実行。
◆ステップ4:Externalモジュールのメイクファイルの修正
・ExternalProject_Externalモジュール名.mk <http://xn--yck6dky8fx60y.mk>
の「/p:Configuration=Release」を
「/p:Configuration=Debug」に修正。
・ExternalPackage_Externalモジュール名.mk <http://xn--yck6dky8fx60y.mk>の「#$(eval
$(call gb_ExternalPackage_add_file」
のパラメータに渡されているパスのReleaseをDebugに修正。
※少なくともlibcdr,libwpd,libmspub,libvisio,liborcusに同様の修正が必要。
※liborcusの場合はPackage_liborcus.mkを修正する。
・ExternalProject_lcms2.mkの「/p:Configuration=Release」を
「/p:Configuration=Debug」に修正。
・ExternalPackage_lcms2.mkのlcms2.dllをlcms2d.dllに修正。
else ifeq ($(COM),MSC)
$(eval $(call
gb_ExternalPackage_add_file,lcms2,lib/lcms2.lib,bin/lcms2.lib))
$(eval $(call
gb_ExternalPackage_add_file,lcms2,bin/lcms2d.dll,bin/lcms2d.dll))
endif
◆ステップ5:python3モジュールのメイクファイルの修正
・ExternalProject_python3.mkの「/p:Configuration=Release」を
「/p:Configuration=Debug」に修正。
・python3\ExternalPackage_python3.mkのlib,dll,pyd名に_dを付加します。
※_d.lib,_d.dll,_d.pydに変更します。
◆ステップ6:ハードコーディングされているmsvcprtの修正
・全てのmkファイルをgrepし、msvcprtをmsvcprtdに変更する。
◆ステップ7:ビルドの実行
・/opt/lo/bin/make -sr debug=true ENABLE_SYMBOLS=true dev-install  2>&1 |
tee build`date +%y%m%d-%H%M`.log
・ビルドエラーが発生した時点で、適宜以下のステップの修正を行います。
◆ステップ8:python3モジュールのソリューションファイルの修正
・workdir\wntmsci14\UnpackedTarball\python3\PCbuild\pcbuild.slnを
Visual Studio 2012 Express for Desktopで開きます。
・構成プロパティのxxlimitedとpython3dllのReleaseをDebugに変更します。
・ターゲット名に_dを付加します。
・python3dllプロジェクトとxxlimitedプロジェクトのみリビルドします。
※もし_d付きで生成されなければ手動でコピーを作成します。
◆ステップ9:Externalモジュールのソリューションファイルの修正
・libcdr,libmspub,libvisio,libwpd,liborcusのソリューションファイルを
Visual Studio 2012 Express for Desktopで開いてプロジェクト変換します。
・上記ソリューションファイルの「追加のインクルードディレクトリ」に以下を
追加します。
\solver\wntmsci14\inc\external
solver\wntmsci14\inc\external\zlib
workdir\wntmsci14\UnpackedTarball\lcms2\include(libcdrのみ)
・上記ソリューションファイルの「プリプロセッサ」に以下を追加します。
_HAS_ITERATOR_DEBUGGING=0
BOOST_ALL_NO_LIB(liborcusのみ。オートリンク無効化マクロ。)
※BOOST_ALL_NO_LIBとはboostのオートリンク機能で、ライブラリ名が
変更されることを防ぐためのものだそうです。
・Visual Studio 2012 Express for Desktopでリビルドします。
※liborcusはliborcus-static-nozipのみリビルドします。debug\orcus.libが
生成されるのでILIB環境変数が指すディレクトリにコピーします。
(ILIB環境変数の定義はconfig.statusに記載されています)
◆ステップ10:unittestの無効化(要原因調査)
・ビルドエラーを起こすunittestを無効化します。
具体的にはModule_モジュール名.mkの
「$(eval $(call gb_Module_add_check_targets,モジュール名,\」の行をコメントアウト
します。
※これも原因がまだわかっていませんが、ビルド中にユニットテストに失敗するため
コメントアウトしています。
◆ステップ11:xmlsecurity\source\xmlsec\nss\nssinitializer.cxxの修正
・undefされている_DEBUGを有効にします。
/*
* Turn off DEBUG Assertions
*/
#ifdef _DEBUG
   #define _DEBUG_WAS_DEFINED _DEBUG
// free.toolcreator del start
//    #undef _DEBUG
// free.toolcreator del end
#else
   #undef _DEBUG_WAS_DEFINED
#endif
◆ステップ12:setup_native\source\win32\customactions\shellextensions\copyeditiondata.cxxの修正
・std::nothrowはデバッグビルドでは有効とならない様なので無効にします。
wchar_t * getProperty(
   MSIHANDLE install, wchar_t const * name, wchar_t const * suffix,
   std::size_t suffixLength, wchar_t ** end = NULL)
{
   DWORD n = 0;
   UINT err = MsiGetPropertyW(install, name, L"", &n);
   if (err != ERROR_SUCCESS && err != ERROR_MORE_DATA) {
       return NULL;
   }
   DWORD n2 = n + suffixLength; //TODO: overflow
// free.toolcreator mod start
//    wchar_t * data = new(std::nothrow) wchar_t[n2];
#ifdef _DEBUG
   wchar_t * data = new wchar_t[n2];
#else
   wchar_t * data = new(std::nothrow) wchar_t[n2];
#endif
// free.toolcreator mod end
   if (data == NULL) {
◆ステップ13:setup_native\source\win32\customactions\regpatchactivex\makefile.mk
の修正
・ msvcrtd.libを追加します。
.IF "$(COM)"!="GCC"
# free.toolcreator mod start
#SHL1STDLIBS+= libcmt.lib
SHL1STDLIBS+= libcmt.lib msvcrtd.lib
# free.toolcreator mod end
.ENDIF
◆ステップ14:solver\wntmsci14\bin配下のlcms2d.dll,python3_d.dll,python33_d.dllのコピー
・ それぞれdまたは_dを消したdll名で同ディレクトリにコピーします。
※これを実行しないと、instsetoo_nativeのビルドで失敗します。


■作成した環境でのメモリリーク実行結果

◆操作手順
・solver/wntmsci14/installation/opt/program/sofficeを実行し、LibreOffice起動後終了する。

◆リークチェック結果


・結論から言うと、起動して終了しただけなのに約88KBリークしています。
以下が結果です(一部抜粋)。
スレッド 0x828c はコード 0 (0x0) で終了しました。
Detected memory leaks!
Dumping objects ->
{306116} normal block at 0x09224A00, 32 bytes long.

Data: < J"  J"  J"     > 00 4A 22 09 00 4A 22 09 00 4A 22 09 01 01 CD CD
{306115} normal block at 0x09222EA0, 32 bytes long.
Data: < ."  ."  ."     > A0 2E 22 09 A0 2E 22 09 A0 2E 22 09 01 01 CD CD

(中略)

{628} normal block at 0x002C6758, 40 bytes long.
Data: <X , pL-         > 58 A3 2C 00 70 4C 2D 09 0B 00 00 00 CD CD CD CD
{615} normal block at 0x002CA250, 24 bytes long.
Data: < `  x Y         > E4 60 F0 00 78 E8 59 09 00 00 00 00 00 00 00 00

{213} normal block at 0x002B3128, 32 bytes long.
Data: <                > E8 E0 F0 00 0B 00 00 00 CD CD CD CD 00 CD CD CD
Object dump complete.
プログラム '[0xF414] soffice.bin' はコード 0 (0x0) で終了しました。


■他のメモリリークチェック方法について

・以前茂木さんから教わったURLに記載のプログラムでリークチェックを行いました。

◆Puryfy

・試用版で確認してみましたが、拡張子がexeでないとチェック出来ないようです。
そのため、soffice.binの確認が出来ませんでした。

◆Insure++

・試用版のインストールで何故か失敗するので検証出来ませんでした。


◆Dr.Memory

・どうやらPDBからソースファイルの情報を読み取っている様で、PDBファイルさえ
作っておけばReleaseモードでもリークチェック可能な様です。
実行結果を一部抜粋します。

Error #1: LEAK 422 direct bytes 0x00588ff8-0x0058919e + 0 indirect bytes
# 0 KERNELBASE.dll!LocalAlloc +0x5e (0x752458de <KERNELBASE.dll+0x158de>)
# 1 SHELL32.dll!CommandLineToArgvW +0x89 (0x76589f22 <SHELL32.dll+0x19f22>)
# 2 GetCommandArgs
[c:\cygwin\home\test\libreoffice-4.0.3.3\desktop\win32\source\officeloader\officeloader.cxx:122]
# 3 wWinMain
[c:\cygwin\home\test\libreoffice-4.0.3.3\desktop\win32\source\officeloader\officeloader.cxx:322]
Error #2: LEAK 422 direct bytes 0x00589440-0x005895e6 + 0 indirect bytes
# 0 KERNELBASE.dll!LocalAlloc +0x5e (0x752458de <KERNELBASE.dll+0x158de>)
# 1 SHELL32.dll!CommandLineToArgvW +0x89 (0x76589f22 <SHELL32.dll+0x19f22>)
# 2 GetCommandArgs
[c:\cygwin\home\test\libreoffice-4.0.3.3\desktop\win32\source\officeloader\officeloader.cxx:122]
# 3 wWinMain
[c:\cygwin\home\test\libreoffice-4.0.3.3\desktop\win32\source\officeloader\officeloader.cxx:364]


※どうやらGetCommandArgs()の戻り値のメモリをGlobalFreeもしくはLocalFreeしていない
メモリリークがある様です。

但し、意図的に作りこんだメモリリークは検出出来ませんでした。

※Dr.Memoryには推奨するコンパイラオプションというものが有るようで、
そのオプションを満足していないために検出出来ないのかもしれません。
参考URL:http://www.drmemory.org/docs/page_prep.html
※cl /Zi /MT /EHsc /Oy- /Ob0 /Femyapp.exe *.cppと記載されて
いるので、/MTdとは混在出来ない様です。
Releaseビルド+PDB環境でも検証してみます。

以上です。



2013年8月25日 16:18 山田太郎 <free.toolcreator@gmail.com>:

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

茂木さん、いつも有用な情報ありがとうございます!

教えていただいた情報は知りませんでした。

ちょうど先ほど、com_MSC_defs.mkに/MDdを追加してもリンカに無視されていて
原因が分からなかったのですが、教えて頂いた情報を見たら/MDの定義が
邪魔していた様です。

他の変更点も確認させて頂きます。

ありがとう御座いました!

以上です。




2013年8月25日 15:51 Isamu Mogi <dyob@lunaport.net>:


茂木です。

今更になってしまいましたが、情報共有ありがとうございます。Windowsでのビ
ルドはものすごく時間がかかるので、このような情報は非常にありがたいです。

山田さんのほうではすでに既知かもしれませんが、周知のため: バージョン4.1
以降ではmsvcのデバッグビルドに切り替える機能が追加されたようです。

gbuild: add support for building against MSVC debug runtime

http://cgit.freedesktop.org/libreoffice/core/commit/?h=libreoffice-4-1&id=3b65852f37f1c8daf8c5c0af1d810c68cc71d8e3

しかしながら、個人的には4.1はカスタマイズして製品とするには早いかなとい
う感じがするため、山田さんの報告していた情報はまだまだ活躍すると思います。

(2013/08/20 8:36), 山田太郎 wrote:
お世話になっております。

■Windows環境のLibreOffice4.0.3.3で_DEBUGを有効にする手順について

・なんとか_DEBUGを有効にすることに成功しましたので、手順を展開させて頂
きます。
ここまで辿り着くのにかなりの時間を費やしてしまいました。
※一部調査が必要な項目がまだ残っています。

◆ステップ1:solenv\gbuild\gbuild.mk <http://gbuild.mk>の修正

「ifneq ($(COM),MSC)
gb_GLOBALDEFS += -D_DEBUG \」を
「ifeq ($(COM),MSC)
gb_GLOBALDEFS += -D_DEBUG \」に修正。

・_HAS_ITERATOR_DEBUGGING=0を追加。
# free.toolcreator add start
gb_GLOBALDEFS += -D_HAS_ITERATOR_DEBUGGING=0
# free.toolcreator add end

※「_HAS_ITERATOR_DEBUGGING=0」はboostをVisualStudioのデバッグ
ビルドでビルドすると発生するエラーを回避するためのものです。
詳細は以下のURLを参照願います。
参考URL:http://social.msdn.microsoft.com/Forums/vstudio/en-US
/03087447-620f-402b-9182-0da5ae6bf61f/boostmultiarray-vs2010debug

◆ステップ2:autoge.shの実行

・--enable-dbgutilを付加して実行します。参考までに、私の環境の
autogen.lastrun
は以下のとおりです。
--disable-activex
--disable-atl
--with-nss-build-tools=/cygdrive/c/mozilla-build
--with-ant-home=/cygdrive/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
--with-lang=en-US ja

◆ステップ3:Externalモジュールのメイクファイルの修正

・ExternalProject_Externalモジュール名.mk <http://xn--yck6dky8fx60y.mk>
<http://xn--yck6dky8fx60y.mk>の「/p:Configuration=Release」を
「/p:Configuration=Debug」に修正。

・ExternalPackage_Externalモジュール名.mk <http://xn--yck6dky8fx60y.mk>
<http://xn--yck6dky8fx60y.mk>の「#$(eval $(call
gb_ExternalPackage_add_file」
のパラメータに渡されているパスのReleaseをDebugに修正。

※少なくともlibcdr,libwpd,libmspub,libvisioに同様の修正が必要です。

◆ステップ4:python3モジュールのメイクファイルの修正

・ExternalProject_python3.mkの「/p:Configuration=Release」を
「/p:Configuration=Debug」に修正。

・python3\ExternalPackage_python3.mkのlib,dll,pyd名に_dを付加
します。
※_d.lib,_d.dll,_d.pydに変更します。

◆ステップ5:ビルドの実行

・ビルドエラーが発生した時点で、適宜以下のステップの修正を行い
ます。

◆ステップ6:Externalモジュールのソリューションファイルの修正

・libcdr,libmspub,libvisio,libwpd,liborcusのソリューションファ
イルを
Visual Studio 2012 Express for Desktopで開いてプロジェクト変
換します。
・上記ソリューションファイルの「追加のインクルードディレクト
リ」に以下を
追加します。
solver\inc\external
solver\inc\zlib

・上記ソリューションファイルの「プリプロセッサ」に以下を追加します。
_HAS_ITERATOR_DEBUGGING=0
BOOST_ALL_NO_LIB(liborcusのみ。オートリンク無効化マクロ。)
※BOOST_ALL_NO_LIBとはboostのオートリンク機能で、ライブラリ名が
変更されることを防ぐためのものだそうです。

・Visual Studio 2012 Express for Desktopでリビルドします。
※liborcusはliborcus-static-nozipのみリビルドします。
debug\orcus.libが
生成されるのでILIB環境変数が指すディレクトリにコピーします。
(ILIB環境変数の定義はconfig.statusに記載されています)

◆ステップ7:python3モジュールのソリューションファイルの修正

・workdir\wntmsci14\UnpackedTarball\python3\PCbuild\pcbuild.slnを
Visual Studio 2012 Express for Desktopで開きます。
・構成プロパティのxxlimitedとpython3dllのReleaseをDebugに変更
します。
・ターゲット名に_dを付加します。

◆ステップ8:testtools\source\bridgetest\cppobj.cxxのdothrow()
の修正(要原因調査)

・throw ::std::bad_alloc();の後のcatchブロックのtry-catchを
コメントアウトします。
※bad_alloc例外をキャッチ出来るかのテストコードの様ですが、
ビルド中に何故か
キャッチ後のエラー「getCaughtException() failed!」が発生
するため、コメントアウト
しています。原因はまだ調査していません。

◆ステップ9:unittestの無効化(要原因調査)

・ビルドエラーを起こすunittestを無効化します。
具体的にはModule_モジュール名.mkの
「$(eval $(call gb_Module_add_check_targets,モジュール名,\」
の行をコメントアウト
します。
※これも原因がまだわかっていませんが、ビルド中にユニットテス
トに失敗するため
コメントアウトしています。

■Windows環境のLibreOffice4.0.3.3でmsvcrtdを使用したメモリリークチェック
の方法に
ついて

・現在環境構築中です。環境が出来たら、また展開させて頂きます。

以上です。





2013年8月5日 16:09 山田太郎 <free.toolcreator@gmail.com
<mailto:free.toolcreator@gmail.com>>:
 >
 > お世話になっております。
 >
 > ■環境変数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
<http://wntmsci14.pro/LinkTarget/Library/ivcl.lib> とオブジェクト
C:/cygwin/home/test/Debug/libreoffice-4.0.3.3/workdir/
wntmsci14.pro/LinkTarget/Library/ivcl.exp
<http://wntmsci14.pro/LinkTarget/Library/ivcl.exp> を作成中
 > (以下略)
 >
 > ※dmake\Makefileに、
 > CPPFLAGS =
 > と定義されているため、もしかしたらundefされているかもしれませ
ん(未確認です)。
 >
 > ※メイクファイルを追おうとしたのですが、_DEBUGを定義している所を
別に見つけたので、
 > そちらを先に確認しようと思います。
 >
 > ■gb_COMPILERDEFSへの追加について
 >
 > ・gbuild.mk <http://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
<mailto: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 <http://xn--eqr.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
<mailto: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


-- 
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.