Skip to content

Latest commit

 

History

History
40 lines (21 loc) · 1.85 KB

2022-04-16.md

File metadata and controls

40 lines (21 loc) · 1.85 KB

2022-04-16

こんにちはー! 失敗の原因、わかりました?

とりあえずKDBを動かせるようにはなりましたが、アプリケーションを起動してテストまでは進んでないです

そうですか。こちらの調査によると、WNDにHIMCがセットされていないということが分かりまして、HIMCをセットすると修正されました。

https://github.com/reactos/reactos/commit/3820744a18cc4ea1b2a44d6c07f03c154f7e2796#diff-69304cac8dfd09a68bdefd2203a78b1092ddcb0cd49380fcd1084ad897faa1dfR1870

これで最初の問題は解決済みです。修正後はこうなりました。

次の問題は、見ての通り、ImmLockIMCで失敗することです。

何か質問はありませんか?

KDBを動かせるようになってから、どのようにするべきか全く想像がついていないので多少ご教授願いたいです

まず、ターゲットのプログラムにDebugBreak();を仕掛けて下さい。これでデバッグしやすくなります。

次はset condition * first alwaysをKDBで実行して下さい。これでユーザー側の例外がキャッチできます。

bpx [address]でブレークポイントを設定できますが、これは関数アドレスがわからないと使えません。

printf("fn: %p\n", fn); などと関数ポインタを吐かせればアドレスが使えます。

状態を追っていくには、ソースコード側でprintfやERR文を埋め込む必要があります。いわゆるprintfデバッグです。

imm32でImmLockIMCをgrepしてReactOSの実装を確かめて下さい。そして分岐点にERRを埋め込んで下さい。これで失敗の原因がある程度わかります。

わかりました

今日はここまで。

ありがとうございました


戻る | 次へ