मैं सी ++ में लिखे गए एक प्रोग्राम को डीबग करने का प्रयास कर रहा हूं। यहां कोड है:जीडीबी चरण पर फ़ंक्शन (अगला) काम नहीं करता
void a() { }
void b() { a(); }
int main() { b(); return 0; }
मैंने इसका उपयोग करके संकलित किया: g++ -g3 -O0 -o cards.exe cards.cpp
।
(gdb) b main
Breakpoint 1 at 0x401421: file cards.cpp, line 10.
(gdb) r
Starting program: C:\workspace\Cards\src/cards.exe
[New thread 1624.0xa28]
Breakpoint 1, main() at cards.cpp:10
10 int main()
(gdb) n
12 b();
(gdb) n
b() at cards.cpp:5 5
void b()
(gdb) n
7 a();
(gdb) quit
The program is running. Exit anyway? (y or n)
मेरा प्रश्न है, क्यों gdb करने के लिए एक अगले आदेश भेजने के लिए अभी भी एक समारोह में कदम है है: यहाँ मेरी gdb सत्र के उत्पादन में है? मैं जी ++ 4.2.1-एसजेएलजे और जीडीबी 6.8 का उपयोग कर रहा हूं।
क्या आपने कुछ और जटिल कोशिश की है? – stefanB
दरअसल हां, मैंने एक() को लूप किए गए आमंत्रण करने का प्रयास किया है। अभी भी काम नहीं करेगा। मैंने __attribute __ ((noinline) के साथ इनलाइनिंग को अक्षम करने का भी प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ है। मैंने अपने हैकिंटोश पर यह कोशिश की है और यह काम किया है। –