Ho un piccolo progetto C++ sotto Linux. Quando cerco di eseguire il debug l'eseguibile con gdb ottengo il seguente errore:GDB si arresta all'avvio (errore interno: follow_die_offset)
../../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.
ho fortemente semplificato il progetto al seguente codice e ancora ottenere lo stesso errore:
Bh:
#ifndef B_H_
#define B_H_
#include <vector>
class B {
public:
B();
std::vector<double> p;
};
#endif /* B_H_ */
B.cpp:
#include "B.h"
B::B() {}
Dh:
#ifndef D_H_
#define D_H_
#include "E.h"
class D: public E {
public:
D();
};
#endif /* D_H_ */
D.cpp:
#include "D.h"
D::D() : E() {}
E.h:
#ifndef E_H_
#define E_H_
#include <functional>
class E {
public:
void set(const std::function<double(void)>& f);
std::function<double(void)> e;
};
#endif /* E_H_ */
E.cpp:
#include "E.h"
void E::set(const std::function<double(void)>& f) {
e = f;
}
main.cpp:
int main() {}
makefile:
all: Test
%.o: %.cpp
icpc -c -std=c++11 -g -o [email protected] $<
Test: main.o D.o E.o B.o
icpc -std=c++11 -o [email protected] $^
clean:
rm -f D.o E.o B.o Test main.o
.PHONY: all clean
L'errore si verifica se faccio:
gdb Test
e quindi richiamare
run
nella CLI gdb.
Il mio sistema:
Aperto Suse 12.3, 64bit
--version ICPC:
icpc (ICC) 15.0.1 20141023
-v ICPC:
icpc version 15.0.1 (gcc version 4.7.0 compatibility)
gdb --version:
GNU gdb (GDB) SUSE (7.5.1-2.1.1)
.515.053.691,36321 milioni
--version gcc:
gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
Non ho idea di ciò che è sbagliato con il codice data e il motivo per cui si blocca il debugger. Per esempio se commento il costruttore della classe B (che non fa nulla e dovrebbe essere equivalente al costruttore predefinito) l'errore non appare più.
Se la versione di Intel System Studio include il proprio gdb, puoi provarlo? –
Penso di averlo fatto ma non sono sicuro di cosa dovrei fare. Prendi semplicemente l'eseguibile gdb dalla cartella bin di intel_composer? – user1304680
Nella versione che ho, c'è un file 'debuggervars.sh' nella directory bin del sistema di studio. Se quella directory nel tuo percorso di ricerca, digita 'source debuggervars.sh', e imposterà il tuo ambiente in modo da poter eseguire il debugger di Intel digitando' gdb-ia'. –