結構コンパイルに時間がかかった。早速作成中のプログラムをデバッグ。
起動してブレイクポイントを設定と思ってソースを出そうとしてみるも出ず。コマンドを間違ったか?と思って色々試すが間違ってないし。会社のマシンとかいろいろあるのでデバッガなど使うときはよくコマンドを間違えたりするのですけどね。で、ソースが出なかった原因がシンボルテーブルでした。開発中ソースはよく-gをつけてコンパイルしますけど、実際に動かすときはテーブルを外してしまいます。オプティマイザのバグによりバグが発生する時もありますけど、基本的に信じて動かすしかないので。それで大抵-gなしってのを忘れてたりするわけです。
今回はmemcmpするメモリ内の値が予想できないものになってそうという疑いがあったのでdisplayコマンドでブレイクポイントにヒットしたらメモリ内容を表示させるようにしてました。該当のデータが読み込まれ、ヒットしてみると原因がよく分かりました。
原因が分かるとデバッグも楽しいですけど、業務で解らんバグにハマるとブルーになりますよね。