2016-06-15 8 views
1

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を作成するにはどうすればよいですか?

この壊れたファイルを作成するには何が問題になる可能性がありますか?レコードの

答えて

0

が、これは完全にディレクトリを構築し、ゼロから新しいビルドを設定するYoctoを削除することで解決した

  • CD ..../poky/
  • のrm -rf /ビルド
  • ソースOE-INIT-ビルド-ENV

カスタムビルド/ confに/ bblayers.confでコピーして構築/ confに/ local.conf

イメージを再ビルドします。

どこかで、私の最初のビルドでは、壊れたデバッグ情報を持つバイナリが生成されています。これはカーネルvmlinuxにリンクされ、すべてのデバッグツールが不平を言った。どんなファイルか、どのように壊れているかわからない。最初から再構築することは非常に満足できる解決策ではありませんが、この場合は問題を解決します。

関連する問題