के साथ gdb परेशानी मैं नेटवर्क पर दीनिक के अधिकतम प्रवाह एल्गोरिदम को लागू करने के लिए एक प्रोग्राम लिख रहा हूं। नेटवर्क को हाथ से या स्टडीन रीडायरेक्शन का उपयोग करके फ़ाइल से लोड किया जा सकता है। मैं छोटी फ़ाइलों (लगभग 30 लाइनों) के साथ प्रोग्राम डीबग करने के लिए जीडीबी का उपयोग करने में सक्षम हूं, लेकिन जब मैं बड़ी फ़ाइलों (> 1000 लाइनों) के साथ प्रोग्राम डीबग करने का प्रयास करता हूं तो मुझे परेशानी हो रही है।stdin redirection
uint32_t read_lines = 0;
while(!feof(stdin))
{
err = fscanf(stdin, "%u %u %u\n", &n1, &n2, &c);
if (err != 3)
{
printf("read_lines=%u\n", read_lines); /*for debugging purposes*/
}
read_lines += 1;
/* write to debug file */
fprintf(debug, "line %u: %u %u %u\n", read_lines, n1, n2, c);
}
अगर मैं gdb के बिना कार्यक्रम चलाने के लिए, यह चलता है, ठीक नहीं है क्योंकि यह एक विभाजन गलती (जो कारण मैं gdb का उपयोग करने के कोशिश कर रहा हूँ है) उत्पन्न करता है, लेकिन यह माध्यम से चला जाता: कोड में ही यह है इनपुट फ़ाइल को "पार्सिंग" का यह हिस्सा (और इसे आउटपुट डीबगिंग फ़ाइल में लिखना)। हालांकि, अगर मैं टाइप करें:
gdb --args ./dinic --mode=NUM --verbose=LOW
(gdb) b 61
(gdb) run < tests/numterc.in
मैं:
(gdb) Program exited with 01 code.
और जब मैं डिबगिंग फ़ाइल को खोलने के लिए यह लगभग 2000 लाइनों है, जब यह होना चाहिए सबसे कम 1000 है, जो इनपुट फ़ाइल लंबाई है ।
मैं दोहराता हूं, यह "बड़ी" फ़ाइलों के साथ होता है, यह छोटे बच्चों के साथ सही काम करता है। प्रश्न होगा, क्या मुझे gdb का उपयोग करते समय कुछ याद आ रहा है, या यह एक जीडीबी बग है?
ध्यान दें कि यह MinGW साथ काम नहीं करता विंडोज़ पर, जैसा कि यहां वर्णित है: http://stackoverflow.com/a/3652530/47984 (और जैसा कि अभी मेरे द्वारा MinGW के gdb 7.7.1 के साथ अनुभव किया गया है)। –