MACOSX駆動デバッグ
最近OSXの駆动の开発をして、中国语の资料はとても少なくて、公式のドキュメントを见て、それから自分で模索して、いくつかのデバッグの経験を记录して、后で使うことに备えて、あるのは正しくないかもしれなくて、达人が见て指导することができることを望みます.
1.ドライバのインストール
ドライバコンパイルが完了したら、/system/Library/Extentions/ディレクトリにコピーします.コピーすると、この拡張インストールが正しくなく、正しく使用できないというメッセージが表示されます.次の処理が必要です.
所有者の変更:
権限の変更:
システム拡張ディレクトリへのアクセスと変更時間の更新
修正が終わったら、パソコンを再起動します.このステップは再起動しなくてもいいかどうか分かりません.
2.デバッグ駆動
アップルの開発者サイトには、ドライバデバッグの方法について説明するドキュメントがあります.ここを押してください.
デバッグドライバのマッチングとロードの問題.
kextload:これはOSXシステムが持っているツールで、システム拡張kextをロードし、ロード前にplistファイルを検証して依存ファイル検証を行い、権限検証を行い、エラー情報を印刷します.
次の例を示します.
真ん中の青いフォントはエラーメッセージです.
このステップでエラーメッセージがない場合は、次のコマンドで検出できます.
kextutil:
ここでは、システム拡張kextをロードし、エラーを診断し、シンボルを生成するためのコマンドについて説明します.
-t:このパラメータの関数は印刷エラー情報です
1.ドライバのインストール
ドライバコンパイルが完了したら、/system/Library/Extentions/ディレクトリにコピーします.コピーすると、この拡張インストールが正しくなく、正しく使用できないというメッセージが表示されます.次の処理が必要です.
所有者の変更:
sudo chown -R root:wheel xxx.kext/
権限の変更:
sudo chmod -R 755 xxx.kext/
システム拡張ディレクトリへのアクセスと変更時間の更新
sudo touch /System/Library/Extentions
修正が終わったら、パソコンを再起動します.このステップは再起動しなくてもいいかどうか分かりません.
2.デバッグ駆動
アップルの開発者サイトには、ドライバデバッグの方法について説明するドキュメントがあります.ここを押してください.
デバッグドライバのマッチングとロードの問題.
kextload:これはOSXシステムが持っているツールで、システム拡張kextをロードし、ロード前にplistファイルを検証して依存ファイル検証を行い、権限検証を行い、エラー情報を印刷します.
sudo kextload -t xxx.kext
次の例を示します.
[computer_name:] user_name% sudo kextload -t BadKEXT.kext
Password:
can't add kernel extension BadKEXT.kext (validation error) (run kextload
on this kext with -t for diagnostic output)
kernel extension BadKEXT.kext has problems:
Validation failures
{
"Info dictionary missing required property/value" = {
"IOKitPersonalities:BadKEXT:IOProviderClass"
}
"Info dictionary property value is of illegal type" = {
"IOKitPersonalities:BadKEXT:IOKitDebug"
}
}
Authentication failures
{
"File owner/permissions are incorrect" = {
"/Users/user_name/Projects/BadKEXT/build/BadKEXT.kext"
"/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/Info.plist"
"/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents"
"/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/MacOS/BadKEXT"
"/Users/user_name/Projects/BadKext/build/BadKEXT.kext/Contents/MacOS"
}
}
Missing dependencies
{
"com.apple.kernel.libker" =
"No valid version of this dependency can be found"
}
真ん中の青いフォントはエラーメッセージです.
このステップでエラーメッセージがない場合は、次のコマンドで検出できます.
kextutil:
ここでは、システム拡張kextをロードし、エラーを診断し、シンボルを生成するためのコマンドについて説明します.
sudo kextutil -t xxx.kext
-t:このパラメータの関数は印刷エラー情報です