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

Re: Speak.exe のデバッグ



白藤です

watanabe wrote
>渡辺@我が家です。
>
>実はプロセスにアタッチしてデバッグする方法がわからなくて困っていました。
>こういう風にするのですか。
># Visual Studioの基本的な使い方がまだわかっていないのです。
># どこを読めば使い方が書いてあるのか未だにわかりません。
># MSDNは巨大なだけで使いにくいし、紙のマニュアルはないし。
># いろいろ教えてください。
今までしたことはなかったですがこのために必死に調べました。
2日間いろいろやってみました。当然、コンソールから動かしたら
とか、WM_SAYITのメッセージをSpeak.exeにたたき込むプログラム
書いてみたりとか...
# VC++ 6 バグがあるのかプロセスを全く表示しない場合があるので
# その場合はVC++ を再起動してやってみてください。

>
(snip)
>何が違うのでしょうね。白藤さんのサウンドチップとドライバーは何ですか
>? 環境はNTですか98ですか?
Windows 2000 Profesional
SoundBlaster Live! BS
DELL Dimension XPS T600r(会社支給)です。

>
>> 2.長いソースでC-n で連続して移動すると行読みしなくなる場合がある
>
>VoiceManager.cppのような英語のソースだと、全く大丈夫でした。白藤さん
>のこの現象は日本語混じりのソースでしょうか?
>
>>  デバッグ中にもなるので、Thread か Windows Message で非同期の動作が
>> あり、VoiceManager の中でhead, speaking_head がくるうのではないか
>> と疑っています。クリティカルセクションの必要な部分はありませんか?
>
>"クリティカルセクション" ! 名前だけは聞いたことがありますが、
>まだ理解していない部分です。
日本語混じりです。VoiceManager.cpp にはCritial Section は
すでに入っているので、どこかに抜けがあるのではと思っています。

VoiceManager.h
CCriticalSection m_speaking_cs;

VoiceManager.cpp
m_speaking_cs.Lock();
// (中略)
m_speaking_cs.Unlock();
の部分です。
リストの操作中に再入されないようにしています。
この手の同期処理のいやなのは、デバッガもログも使えないこと
です(タイミングが変わると現象も変わる)。
ソースを変更して、現象がでなくなればOKという悲しい方法しか
ありません。
ここは、後回しにした方がいいと思います。


>白藤さんはお住まいはどちらですか?
>お休みのときにお時間を取って頂けたら、ご一緒にデバッグできると、作業
>がはかどりそうですね。
DM打ちます。

>
(snip)


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