問題タブ [chardev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - カーネル出力のドライバモジュールの奇妙な dmesg
前の質問からモジュールのロードに失敗したのはなぜですか? (/dev/scull0 : そのようなデバイスやアドレスはありません)経由でモジュールをロードできました/sbin/insmod
が、その後、dmesg をログアウトしました:
ここで私は観察することができます.混乱はscull_trim
(以下のソース)とそれを解決するためのカーネルトリガーによって引き起こされます(または、カーネルで何か問題が発生したときにstrace
カーネル呼び出しを行いますか?).Call Trace:
scull_trim
:
関数scull_trim
は基本的にlinux デバイス ドライバー、3 エディションopen
からのものであり、関数の意図は、メソッドが呼び出される前にデバイスからすべてのバイトを取り除くことです。しかし、なぜdmesg
カーネルがそれを解決するために strace を呼び出さなければならなかったというエラーが発生したのでしょうか?
編集: 問題を解決することはほとんど不可能であるため、github: repo:scull deviceからソース (および dmesg ダンプ) を追加しています。問題を解決するためにアクセスしてください。
c - カーネルログをデバッグするには?
このチュートリアルに従ってスカルデバイスを作成しようとしています: linux device drivers . 私のソースはここにあります私のスカルレポ、ここにはdmesg2.err
カーンログダンプのファイルがあります。以前、修正したドライバ モジュールの char デバイス カーネル出力の奇妙な dmesgを初期化する際に問題がありました。問題は、空のデバイスから読み取ろうとすると、 が表示される/dev/scull0
ことkilled
です。または、私が書き込もうとするecho "abc" >/dev/stdin
と、Segmentation fault
. kern.log からデバッグする方法を本当に学びたいのですが、まだそのためのスキルがありません (私は中級の c であり、GAS asm の基本です)。そのため、カーネルのデバッグに関する本当に優れた本が欲しいです。 + それを理解するために必要なスキル。ソースでバグを見つけることができますが、将来的にはこれらのバグを自分で解決するつもりです。アドバイスをありがとう。