2008年12月28日
川俣晶の縁側ソフトウェア技術雑記total 2372 count

NProf 0.10で日本語名が文字化けする原因の調査結果

Written By: 川俣 晶連絡先

 NProf 0.10は無料で使える.NET用プロファイラで問題はあるものの重宝しています。しかし、日本語のメソッド名等が文字化けします。

 原因を調べたので以下にまとめます。

原因 §

 おそらく、NProf.Hookプロジェクト内のHook.cppの以下の箇所で化けています。

void ProfilerHelper::GetFunctionSignature( 

    FunctionID functionId,

    UINT32& methodAttributes,

    string& returnType, 

    string& className,

    string& functionName,

    string& parameters )

{

    ULONG args;

    WCHAR returnTypeString[ MAX_FUNCTION_LENGTH ];

    WCHAR parametersString[ MAX_FUNCTION_LENGTH ];

    WCHAR functionNameString[ MAX_FUNCTION_LENGTH ];

    WCHAR classNameString[ MAX_FUNCTION_LENGTH ];

    GetFunctionProperties( functionId, &methodAttributes, &args,

            returnTypeString, parametersString, classNameString,

            functionNameString );

    returnType = CW2A( returnTypeString );

    parameters = CW2A( parametersString );

    className = CW2A( classNameString );

    functionName = CW2A( functionNameString );

}

 GetFunctionPropertiesからはUnicode文字列で受け取っているにも関わらず、ここでcharの文字列であるstring型に変換してしまっています。string型はVisual C++のヘッダーファイルxstringで定義されている型で、隣にはwchar_tを使った同等のwstring型も定義されています。

typedef basic_string<char, char_traits<char>, allocator<char> >

    string;

typedef basic_string<wchar_t, char_traits<wchar_t>,

    allocator<wchar_t> > wstring;

 おそらく、Hook.cppだけwstringを使うように直せば文字化けは直ると思われますが、単純置換だけでは上手く行きませんでした。

 対処は、時間がないのに現実逃避のネタを探している優秀な技術者に任せるとしましょう。

追記 §

 結局、自分でやってしまった……。がっくし。

Facebook

このサイト内の関連コンテンツ リスト

2008年
04月
07日
.NET用無料プロファイラNProf
3days 0 count
total 5361 count
2008年
12月
29日
川俣晶の縁側ソフトウェアその他開発日誌
NProfで日本語シンボルを文字化けしないで表示するよう、勝手に変更した版の公開
3days 0 count
total 2657 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20081228182605
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.34 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.