[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Speak.exe のデバッグ



白藤です

やっと bep の実行環境とデバッグ環境がそろったのでSpeak.exe の
デバッグを始めました。

デバッグ方法は以下のようにしています。

1.CVS からソースをとってくる
2.VC++6 で Speak.exe を Debug モードでビルド
3.Debug/ にあるSpeak.exe, Speak.pdb, vc60.pdb をパスの
  通っている適当な所へコピーする

4.Meadow + BEP を起動する
5.VC++ のメニューから
  ビルド(B), デバッグの開始(D), プロセスへアタッチ(A)...
 としてSeak.exe につなぐ
 ※この時、プロジェクトは閉じておくこと
6.MainFrm.cpp かVoiceManager.cpp を開いて、適当な所
  (OnSayIt(), start_queue() など)にブレークポイントを仕掛ける
7.Meadow のカーソルを動かして、ブレークポイントで止める


Speak.exe のソースは8/2 朝の物です。

既知のバグだと思いますが
(まだ始めたばかりなのではずしていることも多いと思います)

1.半角スペースの後に日本語があるとそれ以降読まない
 start_queue() かなと思ったのですがまだ分かりません。
 もしかするとProTALKER ?

2.長いソースでC-n で連続して移動すると行読みしなくなる場合がある
 デバッグ中にもなるので、Thread か Windows Message で非同期の動作が
あり、VoiceManager の中でhead, speaking_head がくるうのではないか
と疑っています。クリティカルセクションの必要な部分はありませんか?

3.半角カタカナだけの行を日本語で読まない
International.cpp の IsJapanese() のfor ループの中に
    if (_ismbbkana((unsigned char)*str)) return 1;
のようなコードを入れて半角カタカナのチェックも必要なようです。

4.Find file でミニバッファに入ったときに、C-i を3回以上おすと
 2回でファイルリストが表示され、3回目以降はスクロールするはずですが
表示ページが切り替わってしまいます。

elisp は全く分かりませんので、C/C++ で分かる部分を追っかけます。
# 仕事中 Meaddow と VC++ はいつも立ち上がっているので気持ちを切り替え
# たい時に追っかけます。

とりあえず。

// Name : Hideki Shirafuji
//
// mailto:shirafuji@mail.com