Debug

VC6 Tips / iteratorがPODに対応しない時の対応

主に、VC6+STLPortでC++ sort library saltを使うときに気になったので対処法のまとめ http://bit.ly/cAPGMy

VC6 Tips / VC6で「std::stringのclear()が宣言されていない、ブロックが大きすぎる・・・」といった内容のエラーへの対処法

std::stringのclear()が宣言されていない、ブロックが大きすぎるという謎のコンパイルエラーについて・・・VC6の標準STLを使っているとVC6が駄々をこねるという構造。STLPortのパスを間違って設定した事が原因。

VC6 Tips / VCでReleaseの設定でSTLPortを使用し、deallocateにてHeap corruption detected at ... とエラーになる場合の対処方法

VCでReleaseの時にのみ Heap corruption detected at 009D1090 HEAP[foo.exe]: Invalid Address specified to RtlFreeHeap(のエラーがデバッガに表示されたら STLPortを使用している場合は #define _STLP_NO_OWN_IOSTREAMS を宣言すればよい。 昔、よく嵌っ…

プライマリパーティションでフォーマットしたハードディスクドライブ

Powered by dKingyo 逆引きハンドブック | Access | CSS | Java | Eclipse 最近HDDが安くなってきたのでついに買ってしまった。 HDDには10000円の法則というのがあり、この値段のHDDは1GB単価が安いのだ。 早速フォーマットし、古いHDDから新しいHDDにファイ…

Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない

Powered by dKingyo Java | C言語 | C++ | C言語 | 逆引きハンドブック今日のRubyで嵌った事。 Rubyの String#gsub! はsに行った処理によってオブジェクト内の文字列の置換してくれるのだと思っていた。 だが、違っていたのだ。 str = "abc def" i = 0 str.g…

FILE DEVICE BENCHMARKの自家製版のバグの原因 PART.2

1秒あたり何KB/secの読み込みができるかと言う部分でファイルサイズの指定を一部間違っているパラメータを渡している部分がありこれも影響していてバグが取れなかったというのもあります。 見た目バグではないのですが、処理結果がどうも腑に落ちないのでか…

FILE DEVICE BENCHMARKの自家製版のバグの原因

処理結果を表示するテキストボックスを上と下で間違えていたという極めて人的な陥りやすいバグでした・・・。 なんか、orzって感じになります。 とりあえず、処理にばらつきはあれどFILE DEVICE BENCHMARKに極めて近い状態になってきました。

忘れられないコーディングミス

for(i=0;i

google:ローカル関数の定義が正しくありません。

error C2601: 'filesize' : ローカル関数の定義が正しくありません。コードは間違っていない・・・。何故だ!? ... ...... ......... int filesize;ではなく・・・int filesize: と定義されていた。コロンじゃなくてセミコロンにしなくちゃ!!! 久々にこういうミスをや…

VCのインラインアセンブラの怪 sizeはダメ!?

sizeは関数の引数です。 mov ecx,sizeだと error C2400: 'オペランド 2' の 'newline' はインライン アセンブラの構文エラーになります。 になり 関数の引数をsizにして mov ecx,sizとすると、 上手くコンパイルできます。 こんなのにかなり時間かけちゃいました。もう訳が…

Camellia実装記 part5

実は、CamelliaのCBC CFB OFB版を作っていたのだが、どうがんばってもCFBとOFBを上手く複合化できない。 何故だ!と思った所、 Camelliaの暗号はConvert形式ではなかったのだ。 私がここで勝手にConvert形式と呼んでいるが、Encrypt Decrypt処理が同じという…

環境依存な発見が難しいセキュリティーホールの元なバグ

OFBエンコードデコードのアルゴリズムをついさっきまで組んでいたのだ。 OFBはエンコードおよびデコードのプログラムは同じはずである。 しかしながらデコードすると全く違う値が返ってくるのだ。 これはオカシイ。 OFBの実装の仕方が悪かったのかと考え並々…

BMLDLLの不具合を報告してくれた方へ

送ってきてくれたメールをスパムと一緒に削除されてしまったようなのでもう一回送っていただけないでしょうか?メーラーのトラブルでメールアドレスもちょっと紛失してしまったもので・・・すみません。 確か、BML_LoadXMLFileで18回目の所でエラーすると言った…

AVL木 part4

前回の記事:(http://d.hatena.ne.jp/studiokingyo/20060307) ってか、最近気づいたのだが・・・私が移植したAVL木のlibdsって再帰構造を使っているんだよね・・・orz 自分で書き直しかなぁ・・・。libdsって自分にとっては結構見難い部類のソースにはいるんで・・・ …

fall through bug

各caseの最後にbreak文を記述しないと,それ以降の処理が無条件で 実行されてしまうので注意が必要です. これはフォールスルー(fall through)と言い、よくバグの温床として 問題視されてきました. そのためC#など,breakを記述しないと コンパイルエラーを…

Linux の wchar_t は 4byte だった orz

そう言う実装もあるらしい。気を付けなければ・・・ 関連:(http://d.hatena.ne.jp/studiokingyo/20050901#p1)

d金魚の頭の中のデバッグ回路

http://d.hatena.ne.jp/xor/20060204/p3 より、 どこでエラーが発生しているのか頭の中で解きなさいとの事。 なるなる。 どれどれ、フローチャートは以下のような感じだ。 見た感じ、割り算を使っているので多分0除算、よって除算部を念頭に頭に状態遷移を…

VC6 Tips / fatal error C1076: コンパイラの制限

boost::spiritでini parserを作っていたら fatal error C1076: コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。 yaneSDK2ndか3rdとかでよく出ていた。このエラー。 ここ数年、比較的そういう風にライブ…

ATL WTL 7.1でコンパイルが通らない時

http://www.freeml.com/ctrl/html/MessageForm/vcpp@freeml.com/1203/

MD5 Optimized in MMX part8 complate!!! but...

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051225) やったぞ!ついに完成した!MMXを使うための良い練習になった。 もっとがんばれば細かいところを最適化できるかもしれない。 この場を借りましてこのソースコードの製作に関することでアドバイ…

MD5でのrotate部

#define MD5_VC_MMX_ROTATE(d,w,s)\ _asm movq d,w\ _asm psllq d,s\ _asm psrlq w,32-s\ _asm por d,w#define MD5_VC_MMX_ROTATE2(d,a,s)\ _asm movq d,a\ _asm pslld d,s\ _asm psrld a,32-s\ _asm por d,aどちらとも同じ処理結果なのだが・・・ウーム。自爆!…

__asm{}内でのアセンブラの#define定義に注意

__asm{ #define COPY(a,s) \ mov a,s mov eax,s\ mov ebx,s COPY(ecx,10) }このように\が抜けているとバグルので注意!(上記の例は厳密には当てはまらないかもしれないが・・・)

MD5 Optimized in MMX part6

前回の続き:(http://d.hatena.ne.jp/studiokingyo/20051224) はい!早速バグ発見。アホですね。ワタシ・・・あはははは・・・。。。 おrz!!!! #define MD5_VC_MMX_F1(d,x,y,z)\ _asm pxor y,z\ _asm pand x,y\ _asm pxor z,x\ _asm movq d,z 早速アップデ…

アセンブラではC言語の配列の参照できない!?

http://www.nk.rim.or.jp/~jun/lxasm/asm02.html より。 例えば次の例ではラベルの宣言が異なりますが, foo equ 1 bar dw 2 mov ax, foo mov ax, bar この場合は ax には定数値が代入され, move ax, [foo] move ax, [bar] この例では,ax には メモリの内…

C言語のファイルをマクロ展開する方法

cppというコマンドラインツールを使うらしい。 via http://www.wakhok.ac.jp/~kanayama/C/03/node114.htmlが、その他にはなにかいいツールはないのかなぁ〜。 なんかcpp使うと#の付いたいらない行が出力されるしなぁ〜。 う〜ん。 解決: mcpp(http://www.m1…

STLport-4.6.2のメモリリーク報告について

src\local_impl.cppのmake_classic_locale()でtime_get等をnewし _Init_timeinfo()を呼ぶのだが、copy_cstringの時にstd::stringで確保されたバッファ領域がデストラクタが呼ばれず?、メモリリークをおこしてしまう。(VC6で確認) とりあえず、ソースに手…

何もエラーしていないのに「例外処理 (初回) は archive.exe にあります: 0xC0000005: Access Violation。」になる時は

デバッガでのシンボル名に余計な文が入っていませんか? 例えば、初期化していないクラスのポインタのメンバ関数を参照したりとかですよ。 はまっちゃいましたよ。ん〜時間無駄にしましたよ!!むきぃ!!! CClass e;//ここでbreak point;そして変数をシンボル…

switchを書くときは必ず先に条件を書く

switchを書くときは必ず先にcaseとbreakを書くようにするとbreak抜けが少なくなるみたいだ・・・。

break抜け・・・もやった。

共通インターフェイス ストリーム ライブラリ*1をデバッグしていたらbreak抜けを多数確認。 もう、嫌!やめて〜(某弁護士風) *1:dkcStream.cの実装(あまりスマートとは言えないが気に入っているので自分で勝手に使用している 「我が子はかわいいのだ!!」…

可変引数つき関数とクラスの相性

printfとかにある可変引数だが、C++のクラスといっしょに使うとクラスの仕様によってはなんかバグってしまう。むぅ。 誤: /// なんかC++のクラス + 可変引数って相性悪いみたい・・・ inline void dODS_base(parm_string base,...){詳しく調べる気にはなら…