objdump -t -D ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
# intelで対応するソースコード
gobjdump -d -S -M intel ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-fa391831c105a91e.a > ./sh-os.obj
gobjdump -h -p ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-fa391831c105a91e.a > ./sh-os.obj
nm ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -h ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -S ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -l ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -s ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -r ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
readelf -x 4 ./kernel/target/i686-unknown-linux-gnu/debug/libshos.a
od -t x1z -A x ./kernel/target/i686-unknown-linux-gnu/debug/deps/libshos-3935fdfd4fa79821.a
- linkerについてのman的なもの
info ld scripts
info block
info registers
info mem
info cpus
info irq
info pic
info tlb
info mtree
# 100byte分
xp /100xb 0x7c00
# アセンブリで表示
xp /100i 0x7c00
xp /16i $eip
# 実行中のコードの物理アドレス
print /x $cs * 16 + $eip
# 10進数
print /d $cs * 16 + $eip
- qemuを立ち上げてGDBでデバッグする 参考
# Makefileのコメントアウトを外す
DEBUG := -S -gdb tcp::9000
- gdbを立ち上げる
> gdb
(gdb) target remote localhost:9000
# break pointを貼りたい場合
(gdb) b *0x7c00
(gdb) continueなど
# break pointの削除
## 設定した全てのブレークポイントを削除する。
delete
## 番号breakp(info break で表示される番号)のブレークポイントを削除する。 番号はスペースで区切って、複数を指定することが可能。
delete breakp
- intel記法で表示させたい(ref)
set disassembly-flavor intel
show disassembly-flavor
# defaultを変更したい場合
echo set disassembly-flavor intel > ~/.gdbinit