Yocto 1.8(fido)を使用して汎用64ビットx86用のLinuxカーネルを構築しています。カーネルが構築され、起動して実行されます。しかし、私がデバッガを使用してデバッグしようとすると、デバッガとツールがすべて停止し、vmlinuxファイルのデバッグ情報を使用できなくなります。私はデバッグ情報を生成する設定を使用してこのカーネルを構築し、objdump -gを使用すると大量のデバッグ情報が見つかります。その部分は私にとって正しいようです。Yocto Linuxは、悪いdwarfデバッグ情報バージョン(2,3,4以外)を持つvmlinuxを作成します。
gdbが文句を言う:
(gdb) symbol-file /yoctobuild/qsp-yocto/poky/build/tmp/work/genericx86_64-poky-linux/linux-yocto/3.14.36+gitAUTOINC+162dfe3bb0_dbe5b52e93-r0/linux-genericx86_64-standard-build/vmlinux
Reading symbols from /yoctobuild/qsp-yocto/poky/build/tmp/work/genericx86_64-poky-linux/linux-yocto/3.14.36+gitAUTOINC+162dfe3bb0_dbe5b52e93-r0/linux-genericx86_64-standard-build/vmlinux...
Dwarf Error: wrong version in compilation unit header (is 26213, should be 2, 3, or 4)
[in module /yoctobuild/qsp-yocto/poky/build/tmp/work/genericx86_64-poky-linux/linux-yocto/3.14.36+gitAUTOINC+162dfe3bb0_dbe5b52e93-r0/linux-genericx86_64-standard-build/vmlinux]
(no debugging symbols found)...done.
重要な部分は、この、明らかに完全に壊れたバージョンであること:
Dwarf Error: wrong version in compilation unit header (is 26213, should be 2, 3, or 4)
objdumpのが壊れているものの異なる考えを持っている:
[[email protected] linux-genericx86_64-standard-build]$ objdump -g vmlinux | more
objdump: Warning:
vmlinux: file format elf64-x86-64
Contents of the .debug_aranges section:
Bogus end-of-siblings marker detected at offset 57646c3 in .debug_info section
objdump: Warning: Bogus end-of-siblings marker detected at offset 57646c4 in .debug_info section
objdump: Warning: Bogus end-of-siblings marker detected at offset 57646c5 in .debug_info section
objdump: Warning: Further warnings about bogus end-of-sibling markers suppressed
objdump: Warning: Invalid pointer size (99) in compunit header, using 4 instead
objdump: Warning: Debug info is corrupted, length of CU at 5768ed8 extends beyond end of section (length = 72746c70)
デバッグ情報のような音は、複数の方法で壊れています。あるいは、これはgdbが最初から捨てられる原因かもしれません。
実際にデバッグを行うことができるデバッグ情報を持つvmlinuxを作成するにはどうすればよいですか?
この壊れたファイルを作成するには何が問題になる可能性がありますか?レコードの