相关文章推荐
大方的西装  ·  Uri 类 (System) | ...·  2 年前    · 
沉稳的石榴  ·  Qt样式表之三:实现按钮三态效果的三种方法 ...·  3 年前    · 
神勇威武的针织衫  ·  jsp页面报错js方法未定义-掘金·  3 年前    · 
Code  ›  gdb无法以“不识别文件格式”运行ELF 64位程序。开发者社区
overflow x86-64 gdb elf
https://cloud.tencent.com/developer/ask/sof/107506149
刚失恋的芒果
2 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 gdb无法以“不识别文件格式”运行ELF 64位程序。

Stack Overflow用户
提问于 2008-11-09 01:24:18
EN

我正在尝试使用GDB进行调试(以找到一个恼人的分段错误)。当我跑步时:

gdb ./filename

在命令行中,我得到以下错误:

This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable 
format: File format not recognized

当我执行:

file /path/executable/

我得到以下信息:

 ELF 64-bit LSB executable, AMD x86-64,
 version 1 (SYSV), for GNU/Linux 2.4.0, 
 dynamically linked (uses shared libs), not stripped

我正在使用GDB6.1,可执行文件是用gcc版本3.4.6编译的。

就使用gdb而言,我有点不知所措,但据我所知,它应该在这种情况下起作用。有什么问题吗?

5 29.9K 0 票数 14
EN
c
gcc
debugging
gdb

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-09 01:26:59

可执行文件是64位(x86-64),调试器是32位(i 686-pc-linux)构建的。您可能需要安装调试器的64位(x86-64)版本。

票数 21
EN

Stack Overflow用户

发布于 2008-11-09 11:35:10

我不知道这是不是你的问题,但我经常面对这种情况。在构建树中,build /automake中的可执行文件不是二进制文件,而是脚本,因此您不能在其中使用gdb。尝试安装应用程序并更改目录,因为否则gdb将尝试调试脚本。

票数 5
EN

Stack Overflow用户

发布于 2008-11-09 09:18:44

这个问题指的是"./filename“和”/path/可执行文件“。这是同一个文件吗?

如果您正在进行尸检分析,您将运行:

gdb executable-file core-file

如果要忽略核心文件,可以运行:

gdb executable-file

在这两种情况下,“ executable-file ”都是指要调试的二进制文件的路径名。通常情况下,这实际上是当前目录中的一个简单文件名,因为您在那里有来自调试构建的源代码。

在Solaris上,64位构建的GDB应该能够同时调试32位和64位可执行文件(尽管我最近的GDB版本有一些问题)。我不确定是否一个32位的GDB可以调试64位的可执行文件。

票数 4
EN
页面原文内容由 Stack Overflow 提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/275471

复制

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

 
推荐文章
大方的西装  ·  Uri 类 (System) | Microsoft Learn
2 年前
沉稳的石榴  ·  Qt样式表之三:实现按钮三态效果的三种方法 - fengMisaka - 博客园
3 年前
神勇威武的针织衫  ·  jsp页面报错js方法未定义-掘金
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号