2011-03-25 5 views

उत्तर

7

आप परिणाम नहीं देख सकते हैं क्योंकि stdout (FILE *) में आउटपुट बफर है। यह तब तक स्क्रीन पर आउटपुट नहीं करेगा जब तक बफर भरा न हो या '\ n' सामना न हो जाए।

तो इस तरह printf फोन:

(gdb) call (int)printf("%d\n", 6) 
6 
$6 = 2 

Btw, "$ 6 = 2" जो printf का परिणाम मान है।

+0

जानना अच्छा है! .. –

1

ऐसा लगता है कि यह ठीक काम किया - printf लौटे 1, यह दर्शाता है कि इसे सफलतापूर्वक मानक आउटपुट में एकल वर्ण मुद्रित।

ध्यान दें कि मानक आउटपुट जरूरी है कि gdb में चल रहा है एक ही टर्मिनल में प्रदर्शित नहीं किया जाता है - यह जहाँ भी कार्यक्रम आप डिबगिंग रहे हैं इसके मानक उत्पादन (यह बस के रूप में करता है, तो कार्यक्रम में ही printf() बुलाया था है है दिखाए जाने वाले - gdb में call कमांड प्रोग्राम के संदर्भ में फ़ंक्शन को कॉल करता है)।

+0

मैं 'printf' के आउटपुट को कैसे देख सकता हूं? – assem

+0

@assem: देखो जहां कहीं भी 'printf' चलेगा अगर प्रोग्राम ने इसे स्वयं कहा था। आप वास्तव में 'print printf' के बजाय gdb कमांड 'print' चाहते हैं - उदाहरण के लिए' प्रिंट argc' वर्तमान संदर्भ में 'argc' के मान को मुद्रित करेगा। – caf

संबंधित मुद्दे