gdb: "कोई प्रतीक तालिका लोड नहीं है"


90

जब मैं gdb में एक ब्रेकप्वाइंट जोड़ने की कोशिश कर रहा हूं तो मुझे यह त्रुटि मिलती है।

मैंने इन आदेशों का संकलन करने के लिए उपयोग किया है:

gcc -g main.c utmpib2.c -o main.o
and:
cc -g main.c utmpib2.c -o main.o
and also:
g++ -g main.c utmpib2.c -o main.o

मैंने "-g" के बजाय "-ddb" को भी आज़माया और मुझे अभी भी वह त्रुटि संदेश मिलता है।

मैं तो gdb निष्पादित करता हूं:

$gdb

जीडीबी में:

(gdb)exec-file main.o
(gdb)break 59
No symbol table is loaded. Use the "file" command.

ओह, मेरा मतलब मुख्य था। मैंने इसे अपडेट किया। मैंने "-ddb" का उपयोग करने की भी कोशिश की और यह अभी भी मुझे वही समस्या दे रहा है।
user994165

हमें बिल्कुल दिखाएँ कि आप gcc और gdb को कैसे लागू कर रहे हैं। किसी भी इरोर से बचने के लिए कॉपी-पेस्ट करें।
पायोत्र प्रस्ज़मो

1
मैंने अपने आदेशों को अद्यतन किया। यह वास्तव में अजीब है। बस काम करना शुरू कर दिया। मुझे पता है कि पहले मैं "gdb a.out" का उपयोग करके gdb तक पहुंच रहा था और मुझे a.out के बारे में एक त्रुटि संदेश मिल रहा था जो मौजूदा या कुछ और नहीं है। फिर मैंने "निष्पादन-फ़ाइल" पर स्विच किया। अब मैंने a.out के साथ प्रयास किया और यह कहता है "यह GDB" i486-linux-gnu "के रूप में कॉन्फ़िगर किया गया था और ब्रेकप्वाइंट सेट किया जा सकता है।
user994165

ओह दोह मैं गलत फाइल को निर्दिष्ट कर रहा था a.out। मैंने अपने स्वयं के फ़ाइल नाम को बदलने के लिए बिना gdb ट्यूटोरियल का अनुसरण किया।
user994165

जवाबों:


58

सबसे पहले, जो आपके पास है वह पूरी तरह से संकलित कार्यक्रम है, न कि ऑब्जेक्ट फ़ाइल, इसलिए .oएक्सटेंशन को छोड़ दें । अब, क्या त्रुटि संदेश दर्शाता है करने के लिए भुगतान करते हैं ध्यान, यह आपको बताता है कि वास्तव में कैसे अपनी समस्या को ठीक करने: "कोई प्रतीक तालिका भरी हुई है। का प्रयोग करें" फाइल "कमांड ।"

(gdb) exec-file test
(gdb) b 2
No symbol table is loaded.  Use the "file" command.
(gdb) file test
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb) 

या सिर्फ कमांड लाइन पर प्रोग्राम पास करें।

$ gdb test
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
[...]
Reading symbols from /home/user/test/test...done.
(gdb) b 2
Breakpoint 1 at 0x80483ea: file test.c, line 2.
(gdb) 

सॉरी मैं एक gdb noob हूं। यह समाधान (और इस सवाल पर अन्य समाधानों में से कोई भी) विंडोज पर डब्ल्यूएसएल पर जीडीबी के साथ काम करता है, क्या आपके पास मेरे लिए कोई सुझाव है?
अधीरॉक्स

140

आपको अतिरिक्त पैरामीटर -g जोड़ना होगा, जो स्रोत स्तर डिबग जानकारी उत्पन्न करता है। ऐसा लगेगा:

gcc -g prog.c

उसके बाद आप सामान्य तरीके से gdb का उपयोग कर सकते हैं।


26
मेरे मामले में, इस जवाब ने मेरे लिए समस्या को हल कर दिया, जबकि स्वीकृत जवाब से कोई फर्क नहीं पड़ा।
फ्रैंकस्टर

8

मुझे भी यही समस्या है और मैंने इस पोस्ट का अनुसरण किया , इससे मेरी समस्या हल हो गई।

निम्नलिखित 2 चरणों का पालन करें:

  1. सुनिश्चित करें कि अनुकूलन स्तर है -O0
  2. -ggdbअपने कार्यक्रम को संकलित करते समय ध्वज जोड़ें

सौभाग्य!


0

जब भी gccसंकलन मशीन और gdb परीक्षण मशीन पर अलग-अलग संस्करण होते हैं , तो आपको डीबगिनो प्रारूप असंगतता का सामना करना पड़ सकता है ।

इसे ठीक करने के लिए, डिबगिनफो प्रारूप को अपग्रेड करने का प्रयास करें:

gcc -gdwarf-3 ...
gcc -gdwarf-2 ...
gcc -gstabs ...
gcc -gstabs+ ...
gcc -gcoff ...
gcc -gxcoff ...
gcc -gxcoff+ ...

या आप उपयोग कर रहे हैं gdbसे मेल खाते gccहैं।


0

मैं आज सुबह इस मुद्दे से मिला क्योंकि मैंने gcc -ggdb -Wall test.c -o testडिफ़रेंट OSes में एक ही निष्पादन योग्य का उपयोग किया था: मेरे मैक (10.15.2) के साथ अपने कार्यक्रम को संकलित करने के बाद , मैं अपने वर्चुअलबॉक्स gdbमें Ubuntu (16.04) में निष्पादन योग्य के साथ भाग गया ।

फिक्स: उबंटू के तहत एक ही कमांड के साथ फिर से खेलना, तो आपको अच्छा होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.