GDB + KGDBを使用したLinuxカーネルモジュールのリモートデバッグ、リモートの「g」パケット応答が長すぎます。

GDB + KGDBを使用したLinuxカーネルモジュールのリモートデバッグ、リモートの「g」パケット応答が長すぎます。

Linuxカーネルをリモートでデバッグしようとしたときに問題が発生しました。

私の設定:

  • ターゲットマシンは、デバッグ情報とKGDBを使用して構築されたカスタムカーネル4.3を含むUbnutu Linuxです。
  • WindowsとCygwinがインストールされた開発マシンです。

Linux側のシリアルポートと開発システム側のUSBを使ってシステムに接続しています。ターゲットマシンで:insmodを使用してモジュールXをロードしました。

>cat /sys/module/X/sections/.text
0xffffffffc046e000 
>cat /sys/module/X/sections/.bss
0xffffffffc04708c0 
>cat /sys/module/X/sections/.data
0xffffffffc0470000

「一部のパラメータ」を使用してカーネルを起動する必要があることを読んでいましたが、Ubuntuでこれを行う方法をよく理解していないので、次のようにしました。

>echo "ttyS0,115200 > /sys/module/kgdboc/parameters/kgdboc

またこれを試しました:

echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc

それから

>echo g > /proc/sysrq-trigger

この時点で、Linuxシステムは停止します。これは良い現象です。 (gdbを待っています)cygwinを開いたWindowsシステムで、vmlinuxファイルとXoファイルをルートディレクトリに配置し、ソースコードを正しい場所に配置します。それから私は走った。

gdb ./vmlinux - b 115200
(gdb) add-symbol-file byt_adsp21479.o 0xffffffffc046e000 -s .bss 0xffffffffc04708c0 -s .data 0xffffffffc0470000
(gdb) set architecture i386:x86-64:intel

その後、カーネルモジュールにいくつかのブレークポイントを設定して実行しました。

(gdb) target remote /dev/ttyS7 which is COM8

有効で入場後

(gdb) continue

Linuxシステムは解放されますが、Linuxシステムでブレークポイントをトリガーする必要があるタスクを実行すると、開発システムに次のメッセージが表示されます。

[New Thread 3264]
Ignoring packet error, continuing...
Remote 'g' packet reply is too long: 0840000000000000000e00080847c0ffffffff000100c0000000000300000000000000bc3b63360088ffff0000000000000000a03b63360088ffff983b63360088ffff000063360088ffff2f944e2fbd3b000020c00a360088ffff000000000000000000000000000000000300000000000000000000000000000000ccd7ceff7f0000ede146c0ffffffff4602000010000000180000000000000000000000

最も奇妙なことは、ある時点で2つの機能を入力できましたが、同じエラーメッセージが表示されたことです。どんな問題がありますか?

ちなみに、私はシリアルを介したデバッグを放棄し、イーサネットを介したデバッグを試みたので、ここに行きました。http://sysprogs.com/VisualKernel/kgdboe/tutorial/ kgboeをダウンロードしてビルドしましたが、insmod kgdboe.koを実行しようとするとエラーが発生します。

insmod: Error: could not insert module kgdboe.ko : Unknown symbol module

dmesgを実行するとわかります。

kgdboe: Unknown symbol set_memory_rw (err 0)

自分の設定に基づいてカーネルモジュールをデバッグする方法を見つけるのに役立つ人はいますか?ありがとうございます!

関連情報