Debug

Illegal Instruction

やらかしちまった。VCでデバッグしているときIllegal Instructionという見慣れないエラーを出した。 ぶっちゃけ、 size_t size;//未初期化 memcpy(dest,src,size);みたいなコードで発生したわけだが^^;(笑) 勘が戻らないなぁ〜

マクロと関数二重定義ではまった。

LZW圧縮解凍ルーチンを作っているとき、メモリストリームライブラリの一部にマクロと関数の名前が同じのがあり、マクロの方が優先されてしまっていたのでメモリストリームの内部ステートが崩れて解凍が2回以上出来ないというバグを作っていました。 これを…

やっぱりnew delete malloc free問題は面倒!!!

Invalid Address specified to RtlFreeHeap うっわ〜 久々にきた!! このエラー。 前までなら確か対処法を知っていたはずだがもう忘れたよ・・・。環境も変えたし・・・*1 いかのサイトが参考になりそうだ。 http://homepage2.nifty.com/tulip-an/soft/scrw…

構造体のポインタのバイト単位のオフセット計算

例えば、以下のような構造体があるとしよう。 typedef struct dkc_LZW_Node{ ///データ dkcdLZW_DATA code; ///親 struct dkc_LZW_Node *parent; ///左の葉 struct dkc_LZW_Node *left; ///真中の葉 struct dkc_LZW_Node *middle; ///右の葉 struct dkc_LZW_…

C++とJavaのメンバ関数の引数の仕様は違うらしい…○| ̄|_

http://d.hatena.ne.jp/higepon/20050329#1112062872 より…、 私もそのような事やりました^^; おrz http://d.hatena.ne.jp/studiokingyo/20040913#p3

構造体のポインタ宣言間違い

これでコンパイルが通る…危険 誤: ///状態遷移 typedef struct RegTrans_ { struct RegTrans *next; int type; }RegTrans;正: ///状態遷移 typedef struct RegTrans_ { struct RegTrans_ *next; int type; }RegTrans;

以下のFPUを使ったmemcpyのソースがバグる

DKC_INLINE void optimized_memcpy_fpu_8bytes( void * d, const void* s, size_t _size ) { _asm { mov edi,d; mov esi,s; mov ecx,_size; shr ecx,3; lx: fld double ptr [esi]; lea esi,[esi+8]; fstp double ptr [edi]; lea edi,[edi+8]; dec ecx; jnz l…

さり気にちとバグっぽいモノを見つける

前にhttp://d.hatena.ne.jp/studiokingyo/20050124にて、 memcpyをhttp://www.cyborg.ne.jp/~xelf/developer/MemoryCopy.htmlを参考にして組んでいると書いたが、 mem3()がバグっている事に気づいた。 void mem3( LPBYTE d, const BYTE* s, int _size ) { _a…

libneetのimgviewをVC6用に移植していて・・・

libneetのimgviewのVC.NET(7.1)版をVC6用に移植していたら、 C言語のライブラリとC++言語のライブラリを一緒にする時は C言語のライブラリの関数 extern "C" long dkingyo_strlen(const char *);または ヘッダファイルのインクルード部を囲うための修飾子 //…

二分木の要素の削除の仕方

二分木でキーを元にそれに対応する葉を探し出して削除するのは簡単だ。 しかし、葉へのポインタを元にO(1)で削除する方法が思いつかない。ナカナカ難しい。 私は考えていた。カクカクシカジカ、3日間くらいだった。出来ると思っていた。*1だが、私の扱ってい…

腕のあるデバッカ―さんに他力本願いいですか?

インラインアセンブラで書いたmemcpy郡をデバッグしていたが、ちょっと時間がかかりそうなので、デバッグは保留。 もし、時間があって行ってみたい方は http://www33.tok2.com/home/dca/DKUT/dkutil_cstd_bug20050124.dgc指摘してくれたり、NYSLの元で公開し…

doxygenのコマンドで(/ω\)ハズカシーィ miss

@authorを@autherにしていた。最後のerとorって結構間違う派・・・ むぅ。

dkutil_cのdkcRLEにバグが見つかりました。

dkutil_cのdkcRLEモジュールに 圧縮解凍機構にバグを発見しました。只今、調査、デバッグ中です。

percentageを求めるプログラム?として

percentageを求めるプログラムとして以下のようなの作った。 でも千分率とかにするとどうも 良く無い結果になる。 多分どこかが間違っていると思うのだが・・・ template<typename ULONG_T=double> class progress_calculator_base { public: typedef ULONG_T unsigned_type; private:</typename>…

これであなたもメモリリーク

某、サイトでエラーチェックを以下のように行っていた。 void *ptr1 = malloc(size1); void *ptr2 = malloc(size2); if(NULL==ptr1 || NULL==ptr2){ return; }さて、どこがいけないのだろうか? 以下のような条件になったとしよう。 このソースがプログラム…

yaneSDK3rdのThreadライブラリにバグを埋め込んでしまった・・・(´Д⊂グスン

まずい、CCriticalSectionがstaticなので初期化順番が上手く回ってこなくてエラーになってしまう・・・。IThreadクラス内のstaticなメンバ ThreadLocalクラスが初期化中にsingletonクラスにアクセスするのだけれどもそのsingletonクラスのCCriticalSectionが…

id:paserry氏のデバッグにちょっと感動

http://d.hatena.ne.jp/paserry/20040928 より。 私がもし、大人になって行う場合どうなのだろうか? この手のデバッグは出来なそうな気がする。 解決して良かった。それにしても、DirectXの内部は凄い事になっていますね。 触らぬ神に祟りなし!?なので私…

yaneSDK3rdの移植中に起こったミス

それからミスった事は・・・ #ifndef __YTLThreadLocal_cpp__ # include <ys3/Thread/yaneTHreadLocal.h> #endif いつもの癖でヘッダをインクルードしてたよ・・・(´Д⊂グスン ヘッダのままだと、「CMutex::CMutex()が解決できません。」 みたいなエラーがでる。</ys3/thread/yanethreadlocal.h>

今回のビット演算ではまったところ

(~(0xFFFFFFFF (0xFFFFFFFF >> (32 - n)) どちらも - 1しないと仕様に合わない^^; 配列と同じように0番目から数える仕様のため。

proce55ing ESPELIONの移植中にはまったところ

ばぐった所 void sshot_set(float px, float py, float vx, float vy) { //念のため入れておく id == ID_SSHOT; flag = 1; px = px; py = py; vx = vx; vy = vy; } 確かに、ローカル変数にコピーするだけだね・・・、C/C++言語の場合は・・・ はまってしまっ…

バグをなるたけ出さないために。

状態を戻すのはバグを出す可能性がある*1ため別に元の状態を戻さなくて良い場合は極力状態を元に戻さない。 *1:テストしにくいため

スタック潰しバグ

エラーになりそうでエラーにならない時もあるバグ unsigned long value = crc(); unsigned short table[0x100]; memcpy(table,another_table,sizeof(unsigned long) * 0x100);上記のような事をやってしまっていたので、crc値がアホ値になってしまった。(´Д⊂…

ココが厳しいよMinGW part4 内部テンプレートクラスの宣言方法

さてさて、早速 何処が厳しいのかって? 以下のプログラムをどうぞ。 template<class T > class gapbuffer : protected std::vector<T,std::allocator<T> > { public: typedef std::allocator<T> A; typedef gapbuffer<T> self_type; #endif typedef std::vector<T,A> base_type; typedef typename bas</t,a></t></t></t,std::allocator<t></class>…

MinGWの不可解なエラーメッセージ解読集

"parse error at end of input" { } の個数が合わない。 例: namespace boost{#if 0}//end of namespace#endif "warning: no newline at end of file" 気にしなくてイイらしい。

ここがきびC MinGW part2 左のtemplate引数を右のtemplate引数に渡せない!

さて、タイトルどおりなのですが、 どうだろうか、以下のコードはMinGWに通らない。 何故?何故?template<class K,class V,class MAP_TYPE=std::map<K,V> > struct map_ex : public map_ex_adapter<MAP_TYPE>{ typedef map_ex<K,V,MAP_TYPE> self_type; typedef map_ex_adapter<MAP_TYPE> base_type ; typedef MAP_TYPE CONTAINER_TYPE; type</map_type></k,v,map_type></map_type></class>…

ここが厳しいよMinGW typename はどう付けるの?

どうも^^dです。 さて、開発環境を少しMinGWに移したわけですが・・・、何かと今まで作っていたライブラリdkutilの移植作業が難しい。 以下のようなクラスでのお話。 template<class MAP_T> class map_ex_adapter : public MAP_T{ public: typedef MAP_T base_type; ty</class>…

stdexceptが抜けていただけで・・・

久々にデバッグに苦労しましたよ^^; dkutilライブラリを更新中にVC++ではコンパイルにまったくエラーは出ないのですが、 どうも、Dev-C++ ( MinGW ) だといきなり出まくりなんですよ。 In , , , As とかね。良くわからないエラーをゲロリンと吐いてくれるわ…

stdexceptが抜けていただけで・・・

久々にデバッグに苦労しましたよ^^; dkutilライブラリを更新中にVC++ではコンパイルにまったくエラーは出ないのですが、 どうも、Dev-C++ ( MinGW ) だといきなり出まくりなんですよ。 In , , , As とかね。良くわからないエラーをゲロリンと吐いてくれるわ…

printfは一番難しい関数?

実は、今までprintfを一番使いこなして無かった・・・。 特に"%02x"とか"%08x"とかまったく分からなかった。 でも、最近になってやっと気づいた。 %02xは % 書式宣言 0 0で埋める 2 数が無かったら最大で2個埋める*1 x 16進数で出力 という感じらしい・・…

基底クラスにvirtualのデストラクタをつけない・・・。

virtual ~hoge(){} を忘れていたためにスマポがありえないメモリリークを出していた・・・。これにはまって、1時間も無駄にした。 このミスって私の記憶では3回ほどあるのだが・・・。 ヽ(`Д´)ノムキィ