c – GDB在启动时崩溃(内部错误:follow_die_offset)

前端之家收集整理的这篇文章主要介绍了c – GDB在启动时崩溃(内部错误:follow_die_offset)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Linux下有一个小C项目.当我尝试使用gdb调试可执行文件时,我收到以下错误

@H_403_5@../../gdb/dwarf2read.c:16760: internal-error: follow_die_offset: Assertion 'dwarf2_per_objfile->reading_partial_symbols' Failed. A problem internal to GDB has been detected,further debugging may prove unreliable.

我已经将项目强烈简化为以下代码并仍然得到相同的错误

B.h:

@H_403_5@#ifndef B_H_ #define B_H_ #include

B.cpp:

@H_403_5@#include "B.h" B::B() {}

D.h:

@H_403_5@#ifndef D_H_ #define D_H_ #include "E.h" class D: public E { public: D(); }; #endif /* D_H_ */

D.cpp:

@H_403_5@#include "D.h" D::D() : E() {}

E.h:

@H_403_5@#ifndef E_H_ #define E_H_ #include

E.cpp:

@H_403_5@#include "E.h" void E::set(const std::function

main.cpp中:

@H_403_5@int main() {}

生成文件

@H_403_5@all: Test %.o: %.cpp icpc -c -std=c++11 -g -o $@ $< Test: main.o D.o E.o B.o icpc -std=c++11 -o $@ $^ clean: rm -f D.o E.o B.o Test main.o .PHONY: all clean

如果我这样做会发生错误

@H_403_5@gdb Test

然后调用

@H_403_5@run

在gdb CLI中.

我的系统:

打开Suse 12.3,64bit

icpc –version:

@H_403_5@icpc (ICC) 15.0.1 20141023

icpc -v:

@H_403_5@icpc version 15.0.1 (gcc version 4.7.0 compatibility)

gdb –version:

@H_403_5@GNU gdb (GDB) SUSE (7.5.1-2.1.1)

gcc –version:

@H_403_5@gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]

我不知道给定代码有什么问题以及调试器崩溃的原因.例如,如果我注释掉类B的构造函数(它什么也不做,应该等同于默认构造函数),则错误不再出现.

最佳答案
看到这个帖子:https://software.intel.com/en-us/forums/topic/540685 – 它似乎是gdb中的一个问题,修复于7.9.更新我将gdb升级到7.9,问题真的消失了,对我来说至少.

猜你在找的Linux相关文章