テスト目的のために終了するだけのアセンブリプログラムを作成しました。コードは次のとおりです。にはldのデバッグオプションがあります
section .text
_global start
_start:
mov eax, 1
mov ebx, 0
int 0x80
プログラムは明らかに32ビットです。しかし、私は1 64ビットプロセッサおよびオペレーティング・システムを使用していますので、私は(NASMを使用して)、それをコンパイルし、次のように連結された:
nasm -f elf exit.asm
ld -m elf_i386 -s -o exit exit.o
GDBでプログラムのデバッグ、私はそこためのコードをリストすることができませんデバッグシンボルはありません。
(gdb) list
No symbol table is loaded. Use the "file" command.
gccを使用する場合、-ggdbオプションを使用して、cファイルをコンパイルする際にシンボルをロードできます。しかし、私はgccを使って64ビットマシン用の32ビットアセンブリをコンパイルする方法がないので(私はこれを検索しましたが、解決策を見つけることはできません)、ldを使用することを余儀なくされています。 ldを使ってデバッグシンボルを読み込むことはできますか?長い質問と余分な情報を申し訳ありません。前もって感謝します。
エルフexit.asm -f 'NASM -g -Fドワーフで組み立てるようにしてください'。リンカはデバッグシンボルを作成しません。リンカに生成するように指示する必要があります。 – fuz
何らかの理由でこれが32ビットコードで動作しない限り、nasmが 'nasm -felf -g -l exit.lstを使用してデバッグシンボルをエクスポートするように強制することができますexit.asm' –
@fuz 'nasm -g -F dwarf -f elf exit.asm'は動作しませんでした –