2011-10-06 11 views
5

मैं "सी प्रोग्रामिंग भाषा", दूसरा संस्करण, और प्रत्येक अभ्यास भी कर रहा हूं।क्या मुझे सी में लिखे गए कार्यक्रम डीबग करने के लिए असेंबली को जानने की ज़रूरत है?

क्या मुझे किताबों के अभ्यास के समाधान के रूप में लिखे गए सी प्रोग्रामों को डीबग करने के लिए असेंबली को जानने की ज़रूरत है?

इसके अलावा, आप किस डीबगर की सिफारिश करते हैं?

+0

नहीं, आप नहीं करते हैं, लेकिन जीडीबी से सीखना आसान हो सकता है! ;-) –

उत्तर

5

आप की आवश्यकता नहीं है ताकि डी में प्रोग्राम में असेंबली को जान सकें, जिसमें डीबगिंग भी शामिल है। हालांकि, अगर आप असेंबली जानते हैं, सी बहुत समझ में आता है; यह वास्तव में असेंबली के कुछ विचारों (विशेष रूप से, कई अलग-अलग आर्किटेक्चर, जैसे x86 और एआरएम) पर कुछ विचार करने में मदद करता है, न केवल डीबगिंग के लिए।

+0

सहमत हुए। यह जानकर कि मशीन ** वास्तव में ** कैसे काम करती है, आपको बेहतर लिखने में मदद मिलती है। असेंबली भाषा सीखना आपको यह समझने में मदद करेगा कि मशीन कम स्तर पर कैसे काम करती है और आप सी को क्यों लिखते हैं। –

2

यह आवश्यक नहीं है लेकिन कभी-कभी बेहद सहायक होता है। यदि आप एमएसवीसी ++ का उपयोग कर रहे हैं, तो आईडीई में बस एक का उपयोग करें, यह भी डिस्सेप्लर दिखा सकता है।

2

नहीं, आप आदेश सी

जहाँ तक डिबगर जाना के रूप में जानने के लिए विधानसभा पता करने की जरूरत नहीं है, शायद सबसे आसान विकल्प डिबगर कि आईडीई है कि आप प्रयोग कर रहे हैं में बनाया गया है का उपयोग करें। विंडोज़ पर, Microsoft Visual Studio लोकप्रिय है (free version है)। Eclipse एक और लोकप्रिय विकल्प है जो कई प्लेटफार्मों पर उपलब्ध है।

कमांड लाइन डिबगर्स भी हैं, जैसे कि gdb, लेकिन जीयूआई आधारित एक से शुरू करना मुश्किल होगा।

1

चरण-दर-चरण डीबग करने के लिए, असेंबली को जानने के लिए यह सहायक हो सकता है, लेकिन आवश्यक नहीं है। यह वास्तव में आवश्यक होने पर डीबगर पर भी निर्भर करता है।

लेकिन प्रोग्राम को डीबग करने के अन्य तरीके हैं, उदा। रणनीतिक स्थानों पर printf() कॉल करें।

1

नहीं, एएसएम की आवश्यकता नहीं है लेकिन सहायक है, जैसे कि दूसरों ने कहा है, एक डीबगर का उपयोग करें ... अन्य लोगों ने क्या नहीं कहा है, यह है कि आप जीडीबी का भी उपयोग कर सकते हैं, लेकिन सुनिश्चित करें कि आप संकलक अनुकूलन या डिबगिंग को अक्षम कर सकते हैं ।

1

जब आप जीसीसी -g2 या -g3 ध्वज के साथ संकलित करते हैं तो आप जीडीबी के साथ प्रोग्राम को डीबग कर सकते हैं। यहां आप एक संक्षिप्त ट्यूटोरियल पा सकते हैं कि जीडीबी http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html का उपयोग कैसे करें और यहां आप कुछ और अधिक व्यापक ट्यूटोरियल पा सकते हैं http://www.delorie.com/gnu/docs/gdb/gdb_toc.html

1

यदि आप अपने कार्यक्रमों को डीबग करने जा रहे हैं तो आपको असेंबली सीखने की आवश्यकता नहीं है। कंपाइलर निष्पादन योग्य (-g जीसीसी के साथ ध्वज) में या कोड फ़ाइल (/Z एमएसवीसी के साथ झंडे के परिवार) में स्रोत कोड जानकारी एम्बेड कर सकते हैं।

डीबगर के साथ प्रारंभ करना कठिन नहीं है (भले ही आप कमांड लाइन का उपयोग करें), और इंटरनेट पर हर जगह संसाधन हैं। यह निवेश है जो आपको सबसे ज्यादा रिटर्न देगा।

फिर भी, असेंबली भाषा का कुछ समझ होने पर कई बार उपयोगी साबित हो सकता है। कंपाइलर द्वारा उत्पन्न असेंबली को देखते हुए कभी-कभी (शायद ही कभी) आवश्यकता होती है जब आप यह देखना चाहते हैं कि कुछ अनुकूलन कैसे किए जाते हैं। लेकिन यह ऐसा कुछ है जिसके बारे में आपको चिंता नहीं करनी चाहिए जबतक कि आपके पास बहुत विशिष्ट नौकरी न हो।

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

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