目次
1. はじめに (s3c2440 linux に基づく)" >1. はじめに (s3c2440 linux に基づく)
2. コマンド cat /proc/sys/kernel/printk: " >2. コマンド cat /proc/sys/kernel/printk:
ホームページ システムチュートリアル Linux Linuxカーネルのデバッグ出力機能:printkの詳細説明

Linuxカーネルのデバッグ出力機能:printkの詳細説明

Feb 14, 2024 pm 08:33 PM
linux Linuxチュートリアル Linuxシステム Linuxコマンド シェルスクリプト 埋め込みLinux Linux を始める Linux学習

printk は、Linux カーネルで最も一般的に使用されるデバッグ関数の 1 つであり、変数の値、関数の実行フロー、エラーの原因などのデバッグ情報をカーネル バッファまたはコンソールに出力するために使用されます。等printk の利点は、シンプルで使いやすく、追加の機器やドライバーを必要としないことです。 printk の実装には、カーネル バッファ、ログ レベル、フォーマット文字列などの概念が含まれます。この記事では、Linux カーネルのデバッグ技術である printk の原理と手法を紹介し、その使用方法と注意点を例を挙げて説明します。

Linuxカーネルのデバッグ出力機能:printkの詳細説明

1. はじめに (s3c2440 linux に基づく)

カーネル デバッグ テクノロジの中で、最も単純なのは printk の使用です。その使用法は、C 言語アプリケーションでの printf の使用に似ています。アプリケーションは stdio.h のライブラリに依存しますが、Linux にはそのようなライブラリはありませんLinux カーネルでこの printk を使用するには、カーネルの実装をある程度理解する必要があります。

printf と printk の違い: printk は先頭に "" スタイルの文字を追加します。N の範囲は 0 ~ 7 で、この情報のレベルを示します。

printk(""....); の n の場合

カーネル ファイル Printk.c (カーネル) の console_loglevel レベルを 7.

に初期化します。 リーリー

2. コマンド cat /proc/sys/kernel/printk:

を使用してレベル構成を確認します。

# cat /proc/sys/kernel/printk
7 4 1 7

7 4 1 7 は、console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel に対応します。

3. レベル構成を変更します:

#echo “1 4 1 7”>/proc/sys/kernel/printk これら 4 つの値を変更します。console_loglevel が 1 に設定されている場合、すべてのデバッグ情報が出力されます。

4. printk 関数レコードの名前と使用法

カーネル ファイル内: Kernel.h (include\linux) は 0 から 7 までの 8 レベルの名前を定義します。 リーリー

printk を使用する:

リーリー

①と②では、出力された情報を確認するためにバッファ log_buf 内のデータをチェックする必要があります。 #dmesg

コマンドを使用する必要があります。 リーリー

cat /proc/kmsg& を使用してバックグラウンドで実行し、デバッグ情報をリアルタイムで出力することもできます。 ②の__FILE__、

FUNCTION

、__LINE__がそれぞれそのファイル、その関数、どの行に対応します。とても実用的です。 リーリー

5. シリアル ポートと printk 関数の関係:

リーリー シリアル ポート出力関数は s3c24xx_serial_console_putchar 関数を呼び出します

リーリー

この関数はハードウェアに関連しています。レジスタを読んで、データが送信されたかどうかを確認します。最後に、データをバイトごとにレジスタに書き込みます。s3c2440 シリアル ポート コントローラが自動的にデータを送信します。

リーリー

Linux で uboot の console=ttySAC0 がシリアルポート 0 として認識される場合、/kernel/printk.c,

に次のコードがあります。 リーリー

カーネルの実行開始時、コマンド ライン パラメータ "console=..." が見つかると、データ分析のために console_setup 関数が呼び出されます。コマンド ライン パラメータ "console=ttySAC0" の場合、デバイス名 (名前) は ttySAC として解析され、インデックス Index は 0、この情報はタイプ console_cmdline および名前 console_cmdline のグローバル配列に保存されます (注: 配列名は配列タイプと同じです)

後続の register_console(&s3c24xx_serial_console); では、s3c24xx_serial_console 構造体が console_cmdline 配列内のデバイスと比較されます。

①解析された名前は S3C24XX_SERIAL_NAME、つまり「ttySAC」で、console_cmdline のコマンドの名前も「ttySAC」です。

②s3c24xx_serial_console 構造のインデックス Index は -1 です。これは、コマンド ライン パラメーター「console=ttySAC0」のインデックスを使用することを意味します。インデックス = 0

透過本文,我們了解了Linux核心調試技術之printk的原理和方法,它們可以用來實現對核心的調試和輸出。我們應該根據實際需求選擇合適的方法,並遵循一些基本原則,如使用正確的日誌等級,使用正確的格式化字串,使用正確的輸出函數等。 printk是Linux核心中最簡單而有效的調試函數之一,它可以實現對核心的回饋和監控,也可以提升核心的可維護性和可擴展性。希望本文能對你有所幫助與啟發。

以上がLinuxカーネルのデバッグ出力機能:printkの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口

Android TV Box が非公式の Ubuntu 24.04 アップグレードを取得 Android TV Box が非公式の Ubuntu 24.04 アップグレードを取得 Sep 05, 2024 am 06:33 AM

Android TV Box が非公式の Ubuntu 24.04 アップグレードを取得

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールする方法

BitPie Bitpie ウォレット アプリのダウンロード アドレス BitPie Bitpie ウォレット アプリのダウンロード アドレス Sep 10, 2024 pm 12:10 PM

BitPie Bitpie ウォレット アプリのダウンロード アドレス

Bitget公式ウェブサイトのインストール(2025初心者ガイド) Bitget公式ウェブサイトのインストール(2025初心者ガイド) Feb 21, 2025 pm 08:42 PM

Bitget公式ウェブサイトのインストール(2025初心者ガイド)

Zabbix 3.4 ソースコードコンパイルのインストール Zabbix 3.4 ソースコードコンパイルのインストール Sep 04, 2024 am 07:32 AM

Zabbix 3.4 ソースコードコンパイルのインストール

詳細説明:シェルスクリプト変数判定パラメータコマンド 詳細説明:シェルスクリプト変数判定パラメータコマンド Sep 02, 2024 pm 03:25 PM

詳細説明:シェルスクリプト変数判定パラメータコマンド

OUYI OKXインストールパッケージが直接含まれています OUYI OKXインストールパッケージが直接含まれています Feb 21, 2025 pm 08:00 PM

OUYI OKXインストールパッケージが直接含まれています

See all articles