当前位置:  开发笔记 > 编程语言 > 正文

是否有ld的调试选项

如何解决《是否有ld的调试选项》经验,为你挑选了1个好方法。

我编写了一个汇编程序,出于测试目的,只需退出.代码如下:

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在编译ac文件时加载符号.但是因为我不知道如何使用gcc为64位机器编译32位程序集(我已经搜索了这个但是找不到解决方案),我被迫使用ld.我可以使用ld加载调试符号吗?对不起长期的问题和多余的信息感到抱歉.提前致谢.



1> fuz..:

nasm传递时会生成调试信息-g.此外,您还需要指定所需的调试信息类型(通常是矮人),这是通过-F交换机完成的.所以要组装你的文件,写

nasm -f elf -F dwarf -g file.asm

然后链接而不-s保留符号表和调试信息:

ld -m elf_i386 -o file file.o

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有