从以下链接: http//gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

-dH发生错误时生成核心转储。

所以,我编译了一个语法错误的程序,并生成了核心文件。 现在如何使用该核心文件? 由于尚未生成任何可执行文件,因此无法调用GDB。

[11:11:12 Wed Apr 27]
~/junk1  $ls
core  hell.c

[11:11:15 Wed Apr 27]
~/junk1  $gcc -g hell.c -dH
hell.c: In function ‘main’:
hell.c:4: error: expected ‘;’ before ‘}’ token
gcc: Internal error: Aborted (program cc1)
Please submit a full bug report.
See <http://bugs.opensuse.org/> for instructions.

[11:11:36 Wed Apr 27]
~/junk1  $ls
core  hell.c

[11:12:09 Wed Apr 27]
~/junk1  $gdb cc1 core
GNU gdb (GDB) SUSE (6.8.91.20090930-2.4)
Copyright (C) 2009 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-suse-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
***cc1: No such file or directory.***
Missing separate debuginfo for the main executable file
Try: zypper install -C "debuginfo(build-id)=41f1efcceccfa5fa0b3476021c731c489547f86e"
Core was generated by `/usr/lib64/gcc/x86_64-suse-linux/4.4/cc1 -quiet hell.c -quiet -dumpbase hell.c'.
Program terminated with signal 6, Aborted.
#0  0x00007fb1b01654e5 in ?? ()
(gdb)

GDB说:cc1:在上面的输出中没有这样的文件或目录。 我该如何使用该核心文件?

#1楼 票数:1 已采纳

我认为切换是为了帮助调试gcc ,而不是你的程序。 您链接到页面如下所示:

3.9调试程序或GCC的选项
GCC有各种特殊选项,用于调试程序或GCC

强调我的。

cc1程序是GCC的内部部分,它可能位于/usr/lib//usr/libexec/

#2楼 票数:1

gdb -c corefile应该可以工作。 我没有必要使用-dH选项,所以不确定它在帮助调试方面有多大用处。

  ask by Aquarius_Girl translate from so

未解决问题?本站智能推荐:

1回复

gcc使用调试选项编译阶段

我正在尝试从GCC学习不同的编译阶段。 手动逐级编译 并完全用“g ++ only”再次编译 在末尾 main.as.o与main.gcc.o相同,没有调试信息 但 main.as.debug.o与main.gcc.debug.o非常不同 为什么? 我什么都错过了?
1回复

使用objdump查看时,GCC调试选项不遵守预处理程序#if

当我使用-g选项运行gcc时,这使我可以在使用objdump运行可执行文件时看到一些c代码。 我有一个程序在#if块中有一段代码。 当我使用-g运行gcc并运行objdump时,它会显示#ifs中不应包含的c代码。 例如,使用以下c代码: 使用gcc -g编译时,对objstart
1回复

使用gcc调试选项编译生产代码是否有副作用?

对于--coverage之类的gcc标志,它们是否有副作用,例如运行时性能损失? 如果不是,那么我可以将它们保留在通用的makefile中并使用它们来构建生产代码吗? Gcc文档对此没有任何说明。 该问题调试选项-g如何更改二进制可执行文件? 解释了-g,但是--coverage
2回复

是否有ld的调试选项

我已经编写了一个汇编程序,出于测试目的,该程序只是退出。 代码如下: 该程序显然是32位的。 但是,我使用的是1个64位处理器和操作系统,因此我进行了编译(使用nasm)并按如下所示进行了链接: 使用gdb调试程序,因为没有调试符号,所以我无法列出代码。 在使用gcc时,可以在编
1回复

无法识别的调试选项:1[默认启用]

我正在用C语言编写用于Windows和linux的跨平台gtk应用程序。今天,我在标题中遇到了奇怪的编译器错误(我从未见过)。 当我在Windows中而不是Linux中构建程序时,就会发生这种情况。 当我通过命令行在Windows中构建它时,此消息显示为警告,并且程序成功编译。 但是,当
1回复

是否有g++或clang++调试选项来指导可变参数模板化

在g ++或clang ++中,有没有一种方法可以查看生成哪些函数模板实例以及在哪个语句中生成它们的位置? 我尝试了解https://github.com/tomaka/luawrapper/blob/master/include/LuaContext.hpp的工作方式。 是否可以使用递
7回复

如何调试选项-g更改二进制可执行文件?

编写C / C ++代码时,为了调试二进制可执行文件,必须在编译器/链接器上启用调试选项。 在GCC的情况下,选项是-g。 启用调试选项后,如何影响二进制可执行文件? 文件中存储了哪些附加数据,允许调试器功能?
1回复

有和没有“-ggdb1”选项的gcc之间的调试信息有什么区别?

默认情况下, gcc会将符号表添加到可执行文件中,因此gdb将获得可读的堆栈跟踪。 gcc手册页中的-ggdb1选项的文档说: 级别1产生的信息最少,足以在您不打算调试的程序部分中进行追溯。 其中包括函数和外部变量的描述,但不包括有关局部变量的信息,也没有行号。 ...在我看来就