« Delphi2009 on Vista / タイプライブラリのインポート | トップページ | ヤマトヌマエビ »

2009年2月26日 (木)

Delphi 2009 でEurekaLogを使う

TEditorのDelphi2009対応をきっかけに、ひさしぶりにDelphi系のblogを巡回するようになりました。

その中にEmbacaderoのTeamJapan blogもあり、そこで紹介されていたEurekaLogを使ってみました。

リーク検出やスタックトレース機能はFastMMのDebugモードでそこそこ満足していたのですが、EurekaLogの以下の機能にほれ込みました:

1. LogのメールもしくはBugTrackツールへの送信機能

今まではユーザーさんにわざわざログを添付して送信してもらう必要があったのですが、これで大分敷居が下がりそうです。

#ただし、デフォルトでは高機能すぎ、実行中のプロセス一覧なども記録されてしまいユーザーさんのプライバシーを侵害しそうなので注意が必要です。

2.Logビューワーが高機能

  スタックトレースをダブルクリックするとIDE上で該当ソース行にカーソルが移動します。さらに、Logを記録したexeが多少古く、手元のソースが更新されていたとしても、履歴フォルダーから旧ソースを開いて該当行に移動してくれます。

今までも、例外アドレス等からエラー発生箇所を特定できましたが、うっかりソースを書き換えてしまいエラー箇所があいまいになることがありましたので、これは助かります。

で、調子にのってFogBugzにアカウントを作りバグトラック環境を構築していたのですが、ここではまりました。

EurekaLogからFogBugzにレポートをUPするところまではすんなりいけたものの、何故かレポートが入ったzipファイルが壊れています。(一度は成功した気がするんですが)

気になってEurekaLogのソースを色々調査していたら、こんな時間になってしまったんですが、やっと原因がわかりました。どうやらDelphi2009のユニコード対応による副作用に原因がありそうです。

EurekaLogからFogBugzへのアップロード時にzipファイルの中身をAnsiStringに放り込んで送信している部分があり、その部分でデータ化けが発生しているようです。

正確に書くと、zipの中身をAnsiStringに入れた後に、ヘッダー情報等を連結している部分があり、その部分でなんらかの変換が走っている模様。

あやしい部分を手当たりしだいにRawByteStringに書き換えたところ、zipファイルを破壊せずにuploadすることが出来るようになりました。(つたない英語でEurekaLogのサポートへ連絡をいれましたが、うまく伝わったかどうか)

Delphi2007までは、バイナリをstringに放り込んでごにょごにょする手法が当たり前でしたが、Delphi2009ではなるべくやめたほうがよさそうです。文字列処理とバイナリ処理は厳密に分けたコードを書くべきですね。AnsiStringとRawByteStringとStringの3種の型を意識したコードなんてやってられません。(コード変換の挙動が完全に把握できるまでは)

参考:

TeamJapan

http://blogs.embarcadero.com/teamj/2008/05/21/180/

FogBugzについての日本語情報:

http://www.hiro3-soft.com/blog/post/2009/01/26/FogBugz-First-Use.aspx

EurekaLogへの設定:

http://news.eurekalog.com/showpost.php?p=4633&postcount=5

|

« Delphi2009 on Vista / タイプライブラリのインポート | トップページ | ヤマトヌマエビ »

プログラミング」カテゴリの記事

Delphi」カテゴリの記事

Delphi2009」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Delphi 2009 でEurekaLogを使う:

« Delphi2009 on Vista / タイプライブラリのインポート | トップページ | ヤマトヌマエビ »