アセンブリ - NASM でシンボルをデバッグします (もう一度)

okwaves2024-01-25  8

この質問は StackOverflow で何度か尋ねられましたが、すべての回答を試しましたが、NASM に DWARF デバッグ シンボルを含めることができません。

Ubuntu 18.04 64 ビットで NASM 2.13.02 を使用しています。まだ何かが足りないかどうかわかりませんが?

念のため、実際には LLDB と GDB の両方を使用したいと思います。

ありがとうございます。

これが私のコードです:

section .bss
section .text

global _start

_start:
    mov ebx, 0
    mov eax, 1
    int 80h

これを構築してリンクする方法は次のとおりです。

nasm -g -F dwarf -f elf64 hello.asm
ld -s -o hello hello.o

結果のファイルは次のとおりです:

$ ls -la hello
-rwxr-xr-x 1 terry terry 352 Sep  4 18:21 hello
$

DWARF データが含まれているかどうかを確認しようとしています:

$ dwarfdump hello
No DWARF information present in hello
$

gdb で実行します:

$ gdb ./hello 
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
[... snip copyright ...]
Reading symbols from ./hello...(no debugging symbols found)...done.
(gdb) 

5

すべてを削除する ld で -s を指定したため、最終的な実行可能ファイルのデバッグ情報も削除されます。

– マイケル・ペッチ

2020 年 9 月 4 日 16:32

ああ、@MichaelPetch、ありがとう。それは新人による間違いでした。ありがとうございました!

– 

user14222280

2020 年 9 月 4 日 16:36

問題ありません。私たちは皆、何らかの方法で学ばなければなりません!

– マイケル・ペッチ

2020 年 9 月 4 日 16:37

@MichaelPetch ご自由にコメントを回答に移動してください。喜んで受け付けます。

– 

user14222280

2020 年 9 月 4 日 16:38



------------------------

私は @Michael からの提案に基づいて自分自身の質問に答えていますPetch は実際に根本原因を発見した人物です。

問題は、デバッグ シンボルを含む「すべてを削除する」ことを意味する -s を付けて ld を使用していたことでした。つまり、私自身の努力が無駄になっていたのです。

正しいコマンドは次のとおりです。

nasm -g -F dwarf -f elf64 hello.asm
ld -o hello hello.o

次に、gdb を使用します。

$ gdb ./hello 
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
[.. snip copyright ..]
Reading symbols from ./hello...done.

(gdb) b _start
Breakpoint 1 at 0x400080: file hello.asm, line 7.

(gdb) run
Starting program: /home/terry/hello 

Breakpoint 1, _start () at hello.asm:7
7       xor ebx, 0
(gdb) 
$
共有 この回答を改善します フォローする 編集

2020 年 9 月 4 日 20:13

2020 年 9 月 4 日 18:19 に回答

ユーザー14222280

ユーザー14222280

2

3

数日後に忘れずに戻ってきて、自分の答えを受け入れてください。素晴らしい週末をお過ごしください!

– マイケル・ペッチ

2020 年 9 月 4 日 19:53

1

ありがとう、必ずやります!

– 

user14222280

2020 年 9 月 4 日 20:13

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。