即使使用 -g 选项,GCC 也不会生成行号信息

2023-11-25

我已经从源代码构建并安装了 GCC 4.8.1:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --disable-multilib
Thread model: posix
gcc version 4.8.1 (GCC) 

我写了一个简单的无用程序:

$ cat hw.c
#include <stdio.h>

void foo()
{
    int a;
    scanf("%d", &a); /* So I can press ctrl+c here. */
    printf("Hello world!\n");
}

int main()
{
    foo();   
}

现在我编译这个:

$ gcc -g -O0 hw.c -o hw

然后开始用GDB调试:

$ gdb hw
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/calmarius/workdir/crucible/hw/hw...done.
(gdb) 

立即运行并按 Ctrl+C:

(gdb) run
Starting program: /home/dcsirmaz/workdir/crucible/hw/hw 
^C
Program received signal SIGINT, Interrupt.
0x00007ffff7b018b0 in __read_nocancel () at ../sysdeps/unix/syscall-template.S:82
82  ../sysdeps/unix/syscall-template.S: Nincs ilyen fájl vagy könyvtár.

我在回溯中得到了函数名称,但代码中没有行号:

(gdb) bt
#0  0x00007ffff7b018b0 in __read_nocancel () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007ffff7a95ff8 in _IO_new_file_underflow (fp=0x7ffff7dd4340) at fileops.c:619
#2  0x00007ffff7a9703e in _IO_default_uflow (fp=0x7ffff7dd4340) at genops.c:440
#3  0x00007ffff7a74fb6 in _IO_vfscanf_internal (s=<optimized out>, format=<optimized out>, argptr=0x7fffffffe018, errp=0x0) at vfscanf.c:620
#4  0x00007ffff7a790bd in __isoc99_scanf (format=<optimized out>) at isoc99_scanf.c:37
#5  0x000000000040054e in foo ()
#6  0x0000000000400568 in main ()

出了什么问题?也许与配置有关?


你的 gdb 太旧了——你需要一个更新的 gdb (我使用 7.6) 来理解 gcc 4.8.1 生成的调试信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使使用 -g 选项,GCC 也不会生成行号信息 的相关文章

  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • CMake 和 Visual Studio:如何获得快速、安静的命令行构建?

    我有一个 cmake 项目 它成功地完成了我想要的一切 但我有大约 100 个文件 当我只需要重新编译一个文件时 我厌倦了每次看到生成的巨大输出 每个文件 30 行 明确地说 我正在编译cmake build 得到这个结果 我需要传递给编译
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 异步方法中的异常未被捕获

    下面的代码没有捕获我的OperationCancelEException 它是通过调用抛出的ct ThrowIfCancellationRequested public partial class TitleWindow Window IA
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 有没有办法使 C90 标准中的枚举无符号? (符合 MISRA-C 2004 标准)

    我正在尝试找到一种使枚举 无符号 的方法 enum x1 0 x2 x3 uint8 t x2 lt PC LINT MISRA C 2004 will complain about mixing signed and unsigned h
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 以标准用户身份打开默认浏览器 (C++)

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 当 ShellExecute 打开浏览器时 它似乎读取 本地管理员 配置文件而不是用户
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • C 的“char”使用什么字符集? [复制]

    这个问题在这里已经有答案了 简单的问题 我最近开始用 C 编程 有一个简单的问题 C 编程语言在其 char 类型中使用什么字符集 例如 ASCII 还是取决于软件 操作系统 char 本质上是 1 个字节 主要在所有操作系统上 所以默认情
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • 需要使用 openssl 加密和解密文件的示例 C 代码

    我正在用 Linux C 编写代码 我需要使用以下命令来加密和解密文件 openssl 目前 我使用系统命令 des3 e nosalt k 0123456789012345 in inp file out out file 进行加密 使用
  • 具有多种类型的 C# 泛型类型推断

    我有以下通用方法 用于将一种类型的输入对象序列化为超类型 如下所示 public string SerialiseAs
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对

随机推荐

  • 在 Postgres 中聚合多个字段时填充缺失的行

    我每天使用 Postgres 汇总一组产品的销售额 不仅需要知道何时发生销售 还需要知道何时不发生销售以进行进一步处理 SELECT sd date COUNT sd sale id AS sales sd product FROM sal
  • 在 OpenCV 中写入 AVI 文件

    网上有示例 Learn OpenCv O reilly 中给出了代码 经过多次尝试后 out avi 文件写入了 0 字节 我想知道我哪里出错了 以下是我使用的代码 int main int argc char argv CvCapture
  • 在 XML 中找不到未封闭的元素

    我有一个很大的 XML 文件 18MB 显然其中有一个标签未关闭 我知道这一点是因为当我运行 W3C 标记验证工具 validator w3 org 时 出现以下错误 You may have neglected to close an e
  • 透明 ARGB 十六进制值

    中的颜色this表全部不透明 我猜的价值A被设定为FF 透明度的代码是什么 例如这个颜色FFF0F8FF AliceBlue 为透明代码如 F0F8FF 以下是 到十六进制值的表格 Example 对于 85 的白色 您可以使用 D9FFF
  • 如何使用 jquery 同位素按日期排序(新)

    请原谅我 因为我对 JS 有点新手 只知道足够的操作 对于那些熟悉同位素的人来说 http isotope metafizzy co docs sorting html 我在页面顶部有一个按日期排序的按钮 同位素找到元素 span clas
  • Javascript 非阻塞脚本,为什么不简单地将所有脚本放在 标记之前?

    为了避免 javascript 阻塞网页渲染 我们是否可以将所有 JS 文件 代码放在关闭之前加载 执行 tag 所有的 JS 文件和代码只有在整个页面渲染完成后才会下载并执行 所以需要像这篇文章中建议的技巧吗 非阻塞技术加载JS文件 他基
  • Yup 模式中的可选字段验证

    我在用着react hook form with yup用于我的表单验证并希望某些字段是可选的 空 按照他们的文档 我正在使用nullable and optional 但它仍在得到验证 export const updateAddress
  • 如何在单击按钮时从一个视图控制器导航到另一个视图控制器?

    我是 iOS 应用程序开发新手 请帮助我如何从一开始view controller到另一个view controller单击按钮时 按照以下步骤 让按钮选择器为 button addTarget select action selector
  • Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]”

    我在使用 在 app 上播放 歌曲 命令时遇到问题 具体来说 Android Auto 无法识别 应用程序 我收到一条音频语音消息 不知道如何帮助在应用程序上播放歌曲 因此 语音识别工作正常 正如我所说的歌曲和应用程序一样 但是与应用程序的
  • 无法使用 OpenMPI 安装 mpi4py:无法编译 MPI 程序

    这是我在这里发表的第一篇文章 如果我的风格有误 请道歉 我一直在尝试使用 python 3 6 在 Ubuntu 16 04 上安装 mpi4py 因为 SU2 需要它进行并行处理 我下载了mpi4py并尝试从源代码构建 因为我想使用我配置
  • 如何配置 Jenkins 以在工作区中显示我的日志?

    我正在使用 Jenkins 进行 CI 并且希望能够公开日志 这样我们就不必通过 telnet 到 CI 框来查看发生了什么 有一个插件可以做到这一点吗 或者我只需要写一个脚本 我的答案是关于读取应用程序服务器 容器日志文件不同的盒子比詹金
  • Vue方法滚动div到顶部

    我在学习vue 我有以下方法 将聊天消息添加到 div 中id toolbar chat 这个 div 允许在 y 轴上滚动 我希望每次添加新消息时 div 都能跳到顶部 为什么我的 JS 不起作用 document getElementB
  • iOS 5 应用程序中对 iOS 6 功能的有条件支持

    如何在应用程序中支持 iOS6 的功能Minimal Deployment Target设置为iOS 5 0 例如 如果用户拥有 iOS 5 他将看到一个UIActionSheet 如果用户有 iOS 6 他会看到不同的UIActionSh
  • 无法转换 System.Runtime.Remoting.ObjectHandle

    在我的代码中我有一个接口 可以说它被称为InterfaceName及其实现称为InterfaceImpl 现在 当我动态尝试获取InterfaceImpl使用以下代码 object obj Activator CreateInstance
  • 如何在 Facebook 页面(不是个人资料)上发布信息到墙上

    我有一个用 php 编写的博客网站 它将新的博客文章发布到 twitter 并在后台使用使用 php curl 传递的简单 http post 请求自动进行博客 ping 我有一个博客网站的 Facebook 页面 并且希望将更新发布到页面
  • Visual 2010 不断告诉我“错误:表达式必须具有类类型”

    好吧 我需要一些见解 我正在学习 C 课程 并正在进行我的第二个项目 我正在尝试创建一个选项列表 允许您将电子邮件存储在字符串向量中 现在 在花时间帮助我并查看代码之前 我想指出我的问题 我在文件 HughesProject2 1 cpp
  • 如何进行rails外部数据库调用?

    所以我希望能够将外部数据库添加到我的config database yml然后从中建模一张表 这可能吗 我一直不知道怎么做 连接不同模型的多个数据库 连接通常通过以下方式创建ActiveRecord Base establish conne
  • Collections.emptyList() 与新实例

    在实践中 返回一个空列表是否更好this return Collections emptyList Or like this return new ArrayList
  • 将数字月份转换为月份缩写

    我有一个 csv 其中有一列名为月份的数字向量 有什么方法可以将其转换为月份的缩写月份名称吗 看看month abb持续的 例如 假设您有一个由月份组成的整数向量 那么您可以通过执行以下操作来使用它来获取月份名称的三个字母缩写 gt mon
  • 即使使用 -g 选项,GCC 也不会生成行号信息

    我已经从源代码构建并安装了 GCC 4 8 1 gcc v Using built in specs COLLECT GCC gcc COLLECT LTO WRAPPER usr local libexec gcc x86 64 unkn