使用gdb调试.c文件时报not executable format错误如何解决
报错核心原因
gdb 是用于调试编译后生成的可执行程序的工具,不支持直接传入C语言源码文件(.c后缀)作为加载对象,你执行的 gdb ./mm.c 命令本身不符合gdb的使用规范,因此触发了文件格式不识别的报错。
标准修复步骤
- 第一步:编译C源码时加入
-g参数,生成带调试信息的可执行文件,-g参数是后续gdb能识别源码、打断点的必要前提:gcc -g -o mm mm.c # 如果代码依赖其他库,正常追加对应的编译参数即可,比如依赖math.h就加-lm - 第二步:用gdb加载编译好的可执行文件即可正常启动调试:
gdb ./mm
其他可能触发该报错的场景及解决方案
如果已经按上述步骤生成可执行文件后仍报错,可以排查以下问题:
- 可执行文件的编译架构和当前运行gdb的设备架构不匹配,比如在x86设备上调试交叉编译生成的ARM架构程序,安装对应架构的专用gdb工具加载即可
- 编译生成的可执行文件损坏,删除旧文件后重新执行编译命令生成新的可执行文件即可
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

