アプリケーション ソフトウェア/カーネルのデバッグ - 2023.2 日本語

Versal アダプティブ SoC システム統合および検証設計手法ガイド (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 日本語

Linux ベースのソフトウェア スタックでは、アプリケーション層とカーネル層の両方でデバッグが必要になる場合があります。一般的な Linux アプリケーションは、カーネル空間ドライバーとの通信に IOCTL 呼び出しを使用します。カーネル ドライバーから I/O 読み出し/書き込み応答が返されない場合、特定のハードウェア レジスタをチェックして、アドレス、長さ、割り込み関連のマスク/イネーブル信号が正しくプログラムされているかどうかを確認できます。レジスタが正しくプログラムされている場合、次のデバッグ手順は、cat コマンドを使用して /proc/interrupts を見て、特定のハードウェア デバイスに割り込みが登録されているかどうかを確認することです。

割り込みが登録されていない場合は、ハードウェア側からさらにデバッグを実行する必要があります。割り込みが登録されている場合は、デバイス ドライバーに特定のカーネル print 文を追加して、デバイス ドライバー内の割り込みサービス ルーチンやその他の関数呼び出しをデバッグできます。アプリケーション レベルのデバッグには、GDB デバッガーを使用できます。また、アプリケーション コードにメモリ リークがないことを確認してください。メモリ リークは通常、動的に割り当てられたメモリが、使用が終了しても解放されない場合に発生します。このような問題は、Valgrind ツールを使用してデバッグできます。