You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu更新后GDB无法为NASM汇编文件设置断点的问题排查

问题原因与解决方案

原因分析

Ubuntu系统更新后,NASM默认生成的DWARF调试信息版本(通常为DWARF5)与当前系统中的GDB版本存在兼容性问题,导致GDB无法正确解析汇编文件的行号信息。C文件断点功能正常,是因为GCC生成的调试信息格式与GDB兼容性更好;而Google Shell环境中工具版本匹配,因此未出现该问题。

解决步骤

  • 指定兼容的DWARF版本重新编译
    修改Makefile中的ASFLAGS,将-F DWARF明确指定为兼容性更稳定的DWARF2或DWARF3版本:

    ASFLAGS := -f elf64 -F dwarf2 -g -Wall
    

    或:

    ASFLAGS := -f elf64 -F dwarf3 -g -Wall
    
  • 清理并重构项目
    执行命令清除旧目标文件与可执行文件,重新编译:

    make clean && make
    
  • 验证调试信息(可选)
    使用readelf检查汇编目标文件的行号调试信息是否正常生成:

    readelf --debug-dump=line foo.o
    

    若输出中能看到foo.asm的行号记录,说明调试信息生成正常,此时再启动GDB设置断点b foo.asm:5即可正常工作。

  • 检查工具版本(可选)
    查看NASM与GDB版本,确认是否存在版本不匹配:

    nasm -v
    gdb --version
    

    若GDB版本过旧,可尝试更新到最新版本(但优先尝试指定DWARF版本的方法,操作更简单高效)。

内容的提问来源于stack exchange,提问作者BrKo14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:35:16