gpt4 book ai didi

Linux(64 位)、nasm 和 gdb

转载 作者:可可西里 更新时间:2023-11-01 11:50:35 25 4
gpt4 key购买 nike

我正在搜索其他主题,但运气不佳。我的问题也许很简单但令人沮丧。我正在 64 位 Ubuntu 11.04 上编译两个文件:

  1. nasm -f elf64 -g file64.asm
  2. gcc -g -o file file.c file64.o

然后我用 gdb 调试生成的可执行文件。有了C,一切都OK。但是,在调试程序集时,源代码对调试器是“不可见的”。我得到以下输出:

(gdb) step
Single stepping until exit from function line,
which has no line number information.
0x0000000000400962 in convert ()

快速调查:

objdump --source file64.o

显示汇编源代码(和行信息)包含在文件中。

为什么我在调试 session 中看不到它?我究竟做错了什么?这些问题是在迁移到 64 位 Ubuntu 后出现的。在 32 位 Linux 中它可以工作(它应该如此)。

最佳答案

有了 NASM,我在使用 dwarf 调试格式时对 gdb 有了更好的体验。然后 gdb 将汇编源代码视为任何其他语言(即,不需要反汇编命令)

nasm -f elf64 -g -F dwarf file64.asm

(如果指定了 -F,版本 2.03.01 及更高版本会自动启用 -g。)

我使用的是 NASM 2.10.07 版。我不确定这是否有所作为。

关于Linux(64 位)、nasm 和 gdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com