मेरे पास लिनक्स के तहत एक छोटा सी ++ प्रोजेक्ट है। जब मैं gdb के साथ निष्पादन डिबग करने की कोशिश मैं निम्नलिखित त्रुटि मिलती है:जीडीबी शुरू होने पर क्रैश (आंतरिक त्रुटि: 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.
मैं दृढ़ता से निम्नलिखित कोड को परियोजना को सरल बनाया है और अभी भी एक ही त्रुटि मिलती है:
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() {}
धनबाद:
#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
त्रुटि तब होती है, तो मुझे क्या करना:
gdb Test
और फिर आह्वान
run
gdb CLI में
।
मेरे सिस्टम:
ओपन Suse 12.3, 64 बिट
icpc --version:
icpc (ICC) 15.0.1 20141023
icpc -v:
icpc version 15.0.1 (gcc version 4.7.0 compatibility)
gdb --version:
GNU gdb (GDB) SUSE (7.5.1-2.1.1)
जीसीसी --version:
gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
मुझे पता नहीं क्या दिया कोड और क्यों डिबगर दुर्घटनाओं के साथ गलत क्या है। उदाहरण के लिए यदि मैं कक्षा बी के निर्माता को टिप्पणी करता हूं (जो कुछ भी नहीं करता है और डिफ़ॉल्ट कन्स्ट्रक्टर के बराबर होना चाहिए) त्रुटि अब और प्रकट नहीं होती है।
यदि इंटेल सिस्टम स्टूडियो के उस संस्करण में अपना स्वयं का जीडीबी शामिल है, तो क्या आप इसे आजमा सकते हैं? –
मुझे लगता है कि मैंने किया लेकिन मुझे यकीन नहीं है कि मुझे क्या करना है। बस intel_composer bin-folder से gdb निष्पादन योग्य ले लो? – user1304680
मेरे पास संस्करण में, सिस्टम स्टूडियो बिन निर्देशिका में एक 'debuggervars.sh' फ़ाइल है। यदि आपके खोज पथ में वह निर्देशिका है, तो 'स्रोत debuggervars.sh' टाइप करें, और यह आपके पर्यावरण को स्थापित करेगा ताकि आप' gdb-ia' टाइप करके इंटेल के डीबगर को चला सकें। –