トップページ⇒tech
31コメント11KB

BoundsChecker VS Purify

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
BoundsCheckerとPurifyってどっちがいいの?
0002デフォルトの名無しさんNGNG
VB
0003名無しさんです@お腹いっぱい。NGNG
ここ・・・・南極?
0004名無しさん@お腹いっぱい。NGNG
>>1
BoundsChecker体験版のプロテクト外しを教えてくれたら、教えたげる。
0005デフォルトの名無しさんNGNG
うむ、実際に使ってみて評価出来るような人間は、実際には
両方は使えない環境にいるのが普通。いたとしても、極まれ
である。
よって、1の質問は解決するみこみなし。
1が両方買って評価し報告すること。
0006名無しさんi586NGNG
Purifyは持ってるけど。。。
000729NGNG
>>6
BoundsCheckerはときどきCマガに評価版入ってるから、
それで評価してよ。
おれも知りたい。
自費で買おうかと思ってるくらいだから。
0008sageNGNG
マジレス。
Win2000だと、OSのHeapコードにバッファオーバーランを検知する
機能がついてて、それを使うから、バッファオーバーラン検知に
にはどっちも必要ない。メモリリークも、リークしてないのに
リークしてるって過敏に反応するから使えない。自分でアロケーション
コードにラッパーをかまして発見したほうが楽で早い。
使えそうな機能としては、Purityにはプロファイラ機能があるみたいだから
それと、BoundsCheckerのStack上の変数のバッファオーバーランを
検知する機能だな。まあ君が何のために使いたいのかはっきりしてるなら
このアドバイスでどっちを買えばいいかわかるだろ。
どうしても両方使って評価してほしいなら両方使えるからやってやってもいい。
ただ全機能を評価するのはいやだから、どの機能について比較すれば
いいのか言ってくれ。
00097NGNG
やってくれなくてもいい。
0010デフォルトの名無しさんNGNG
>>4
Windowsディレクトリに入るなんだったかのファイルに、time_t->文字列
したのが入っていた。もう3年位前の話だが。
0011デフォルトの名無しさんNGNG
CodeGuardはどうよ?
0012尻たがりNGNG
BoundsCheckerは、MFCのメモリリークすれすれも見てくれて
やりすぎの感はありますが、あてになるほうだと思います。
やや分かりづらいですが、一通りチェックする価値はあります。
すぐ慣れるし。
何で困ってる次第でしょう、多分。
>8
Win2000でのバッファオーバーラン検知機能は標準でしょうか?
Platform SDKでしょうか?よかったらお教えください。
0013デフォルトの名無しさんNGNG
>>8
あなたの言う「評価」は、通常使われる「評価」ではありません。
すみやかに殻から出ることをお勧めします。
0014デフォルトの名無しさんNGNG
>>8
>自分でアロケーション
>コードにラッパーをかまして発見したほうが楽で早い。
こういう勘違いは恥ずかしいのでやめてください。
0015デフォルトの名無しさんNGNG
BoundsCheckerはDevPartnerで買えば
プロファイラ(TrueTime)もついてるよ。
00168NGNG
>>13 意味不明。
>>14 どこが勘違いなのか教えてくれや。
>>12
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
の下にプログラムのファイル名でキーを作って、そのなかにREG_SZで
GlobalFlagって名前の値を作って、そこに"0x02000000"を書き込む。
そうするとそのプログラムに対してHeapCheckingがイネーブルになる。
a = (LPBYTE)HeapAlloc(GetProcessHeap()@` 0@` 100);
*(a + 100) = 0;
HeapFree(GetProcessHeap()@` 0@` a);
こういうBugならHeapFreeの中でとまるから、一発でわかる。
a = (LPBYTE)HeapAlloc(GetProcessHeap()@` 0@` 100);
HeapFree(GetProcessHeap()@` 0@` &a);
こういうBugはイネーブルにしなくてもデバッガーにはメッセージが
表示されるけど、イネーブルすると、AVでとまるようになるから、より
問題を発見しやすくなる。
malloc@`newはNT4まではちょっと面倒だったんだが、W2Kからmallocは
OSのHeapAllocをそのまま呼ぶようになったから、HeapCheckingが使えるように
なった。以前は、_set_sbh_threshold(0)を呼んでVC-Runtimeの
Heapコードをディスエーブルしなくちゃならんかった。
ただ、VC-Runtimeのなかで、16バイト境界に揃えるコードが入っているから
a = (LPBYTE)malloc(100);
*(a + 100) = 0;
は引っかからない。*(a + 112) = 0にしないと駄目。どうしても1バイト
オーバーランを見つけたい場合はVC-Runtimeのリビルドで対処。
00178NGNG
追加情報
同じキーのなかにPageHeapFlagsっていう値をREG_SZで作ってそこに1を書き込むと
HeapCheckingがもうちょっと強力になる。具体的には、アロケートされたメモリを
4Kページの末尾にフィットするようにして、次の4Kページをアクセス不可にしてる。
これにより、実際にオーバーランを起こした瞬間にAVが発生するようになる。
ただ、8バイト境界に揃えられてるので
a = (LPBYTE)HeapAlloc(GetProcessHeap()@` 0@` 100);
*(a + 100) = 0;
では引っかからずに、*(a + 104) = 0; じゃないと引っかからない。
あと、これをイネーブルにするとメモリを大量に食うことになる。
どんな小さなアロケーションでも2ページ使用するからね。
0018デフォルトの名無しさんNGNG
どう見ても楽で速いラッパーの説明じゃんだけど。
つーか、「殻」ってW2Kの「殻」のこと。
PurifyってNT4でもUnixでも使えるっつーの。
0019デフォルトの名無しさんNGNG
それと、その「楽で早い」説明すらまともに出来ない人間が、
どうして、「自分は何かを評価して、他人に説明できる」
なんて、ゴーマンなこと思っちゃったりするワケ?
002018NGNG
s/説明じゃんだけど/説明じゃないんだけど/
0021デフォルトの名無しさんNGNG
PurifyとBoundsCheckerの機能評価の話に、
W2Kローカルの、しかも自分ローカルなテクニックを対比させている
ところがマヌケってとこに気づかないのが痛いね。
00228NGNG
>>18
噛み付くねえ。
ラッパーの説明じゃないよ、君たちに対してresしたわけじゃないから。
12が聞きたいって言うから書いてあげたの。
楽で早い説明はできないな。そんなの説明するまでもないもん。
まあ、コードを理解しないでカット&ペーストでプログラム書いている
人にはわからんがな。
君こそラッパーが駄目な理由まったく書いてないんだけどね。
まあ自分でビルドが出来ないライブラリの中のリークはツールを
使うしかないが、それはまれだろ。君がUnixを使ってるなら
ソースがついてるんだから、自分でビルドして解明できるから
なおさらだよな。
PurifyとBoundsCheckerの機能評価の話にOS側の機能を対比させるのの
どこがおかしいん?
OS側にこれくらいの機能がついてれば、Purify&BoundsCheckerを使って
見つけるバグの大部分は見つかるだろ。だからあんまり必要ねーんじゃ
ないのって書いたのにね。1がUnixを使ってるなら無視すればいいだけのこと。
外野が噛み付くのはウザイ。
まあ、君は高い使えこなせもしないツールに囲まれて仕事してくれや。
W2Kの殻に入ってるっていわれりゃそりゃそうだ。Winだけで食えてるし
Unixは必要になったらやるわ。じゃあおれはこれで逃げる。じゃあな。
0023デフォルトの名無しさんNGNG
また、粘着君が出たみたいね。
0024デフォルトの名無しさんNGNG
>>23
うん。
もうちょい説明お願い > 8
ラッパーって、コードを変更しなきゃ駄目なの?
0025尻たがりNGNG
>8
丁寧な回答ありがとうございます。
勉強になりました。
勘違いな突っ込みにめげず、これからも小さな親切御願いします。
0026名無しさんi486NGNG
BCはWindows2000対応してないしなぁ〜
002723-24NGNG
ちっ、乗ってこなかったか。
アホな解説したら撃沈しようと手薬煉引いて待ってたのに。
0028デフォルトの名無しさんNGNG
1
0029デフォルトの名無しさんNGNG
8>
オレも勉強になった。これから試してみるッス。
所で 偶にこーゆう技を書いてくれるヒトがいますけど、
こーうのって どうやって見つけてるんでしょうね。MSDNとかかな?

>PurifyとBoundsCheckerの機能評価の話に
その目的と多機能ゆえに複雑な使用法を想像すれば
8 は試してみる価値のある方法を紹介してくれたと思うのだが?
0030デフォルトの名無しさんNGNG
>>29
そのものズバリの本があるから探してみれ<Windozeでのデバッグ
003129NGNG
>30
ニャー!(了解!)
■ このスレッドは過去ログ倉庫に格納されています