>> ডগ লয়েড: ঠিক আছে, GDB.
এটা ঠিক কি হল?
যা দাঁড়িয়েছে তাই GDB, গনু ডিবাগার জন্য,
সত্যিই একটি ভয়ঙ্কর টুল যে আমরা করতে পারেন আমাদের প্রোগ্রাম ডিবাগ আমাদের সাহায্য করার জন্য ব্যবহার,
অথবা কিছু জানতে যেখানে আমাদের প্রোগ্রাম যাচ্ছে ভুল.
, GDB, amazingly শক্তিশালী কিন্তু এটি দিয়ে আউটপুট এবং মিথস্ক্রিয়া
একটি সামান্য বিট রহস্যপূর্ণ হতে পারে.
এটি সাধারণত একটি কমান্ড লাইন টুল, এবং আপনার বার্তা অনেক নিক্ষেপ করা যাবে.
এবং এটা কোন ধরনের হার্ড পারেন ঘটছে ঠিক কি বিশ্লেষণ.
সৌভাগ্যবশত, আমরা গ্রহণ করেছি ধাপ আপনার জন্য এই সমস্যাটি সমাধানের জন্য
আপনি CS50 মাধ্যমে কাজ হিসেবে.
আপনি গ্রাফিকাল ব্যবহার না করা হলে ডিবাগার, যা আমার সহকর্মী ড্যান
Armandarse বেশ উচ্চারিত হয়েছে একটি ভিডিও সম্পর্কে একটি বিট যে
এখানে উপর হতে হবে এই মুহূর্তে, আপনার প্রয়োজন হতে পারে
কমান্ড লাইন থেকে ব্যবহার করার জন্য সরঞ্জাম সঙ্গে GDB কাজ করতে.
আপনি CS50 মধ্যে কাজ করছি আইডিই, আপনি এই কাজ করতে হবে না.
কিন্তু যদি আপনি না এবং CS50 IDE তে কাজ,
সম্ভবত একটি সংস্করণ ব্যবহার CS50 অ্যাপ্লায়েন্স এর,
বা অন্য লিনাক্স অপারেটিং GDB সঙ্গে সিস্টেম, এটি ইনস্টল
আপনি ব্যবহার করার প্রয়োজন হতে পারে এই কমান্ড লাইন টুল.
>> আর যেহেতু আপনি পারে এটা, যে কি আছে
ঠিক কিভাবে বুঝতে দরকারী , GDB কমান্ড লাইন থেকে কাজ করে.
কিন্তু আবার, যদি আপনি এবং CS50 IDE ব্যবহার করে, আপনি
গ্রাফিক্যাল ডিবাগার ব্যবহার করতে পারেন যে আইডিই মধ্যে নির্মিত হয়.
সুতরাং জিনিস সঙ্গে পেতে যাচ্ছে , GDB, ডিবাগিং শুরু করার
একটি নির্দিষ্ট প্রক্রিয়া প্রোগ্রাম, সব আপনি কি প্রয়োজন
, GDB অনুসরণ টাইপ করা হয় প্রোগ্রামের নাম দ্বারা.
সুতরাং উদাহরণস্বরূপ, আপনার প্রোগ্রামটি যদি হ্যালো, আপনি GDB হ্যালো টাইপ করতে হবে.
>> যখন আপনি না যে, আপনি যাচ্ছেন , GDB পরিবেশ টান.
তোমার প্রম্পট পরিবর্তন, এবং হবে পরিবর্তে হচ্ছে সাধারণত কি এটা
আপনি যদি কিছু লিখলেই হয় কমান্ড লাইনে LS এ,
আপনার সাধারণত সব সিডি লিনাক্স, আপনার প্রম্পট কমান্ড
সম্ভবত, কিছু পরিবর্তন করতে হবে বন্ধনীর মত, GDB বন্ধনী.
যে কারণ, আপনার নতুন GDB প্রম্পট এর আপনি GDB পরিবেশ ভিতরে ঢুকে গেছে.
একবার যে পরিবেশের ভিতরে, দুটি প্রধান কমান্ড আছে
আপনি সম্ভবত ব্যবহার করব যে নিম্নলিখিত ক্রম অনুযায়ী.
>> প্রথম বি, যা বিরতির জন্য ছোট.
এবং আপনি বি, আপনি সাধারণত টাইপ পরে একটি ফাংশন এর নাম টাইপ করুন,
অথবা আপনি জানেন যে ঘটতে যদি কি লাইন সংখ্যা প্রায়
আপনার প্রোগ্রাম শুরু হয় একটু অদ্ভুত আচরণ,
আপনি একটি লাইন টাইপ করতে পারেন সংখ্যা আছে পাশাপাশি.
কি বি, বা বিরতি, আছে এটি আপনার প্রোগ্রাম পারবেন
একটি নির্দিষ্ট সময় পর্যন্ত চালানোর, ফাংশন যথা, নাম
আপনি উল্লেখ করুন অথবা লাইন যে আপনি নির্দিষ্ট করে সংখ্যা.
>> এবং যে সময়ে, এটা মৃত্যুদন্ড বরফে পরিণত করা হবে.
এই কারণ, সত্যিই একটি ভাল জিনিস মৃত্যুদন্ড নিথর হয়েছে একবার,
আপনি খুব ধীরে ধীরে শুরু করতে পারেন আপনার প্রোগ্রামের মাধ্যমে পইঠা.
আপনি চলেছি, সাধারণত, চলমান আপনার প্রোগ্রাম, তারা বেশ ছোট করছি.
সাধারণত, আপনি বিন্দু টাইপ যাই হোক না কেন আপনার প্রোগ্রামের নাম, এন্টার হয়
এবং আপনি নাচা যাবে আগে, আপনার প্রোগ্রাম ইতিমধ্যে সমাপ্ত হয়.
এটা সত্যিই চেষ্টা অনেক সময় না এবং ভুল কি জিনিসটা.
এটা সত্যিই কিছু মন্থর পাবে তাই নিচে B সঙ্গে একটি বিরতি বিন্দু সেট করে,
এবং তারপর মধ্যে পদবিন্যাস.
>> আপনি আপনার বিরতি সেট করেছি তারপরে বিন্দু, আপনি প্রোগ্রাম চালাতে পারেন.
আর যদি আপনার কেউ থাকে কমান্ড লাইন আর্গুমেন্ট,
আপনি, এখানে তাদের কিছু উল্লেখ না যখন আপনার প্রোগ্রামে সম্ভবত কিছু নাম, GDB টাইপ.
আপনি সমস্ত কমান্ড লাইন উল্লেখ R, বা চালান গ্রহণ করে আর্গুমেন্ট,
এবং তারপর যাই হোক না কেন কমান্ড লাইন আর্গুমেন্ট আপনি আপনার প্রোগ্রামের ভিতর প্রয়োজন.
অন্যান্য একটি সংখ্যা সত্যিই আছে গুরুত্বপূর্ণ এবং দরকারী কমান্ড
জিডিপি পরিবেশের ভিতরে.
তাই শুধু দ্রুত আমাকে দিন তাদের কিছু পুনরালোচনা.
>> প্রথম, পরের জন্য স্বল্প, যা এন, হয় এবং আপনি পরবর্তী পরিবর্তে এন টাইপ করতে পারেন
উভয় কাজ করবে.
আর এটা শুধু সাঁটে লেখার.
এবং যদি আপনি ইতিমধ্যে সম্ভবত করেছি অর্জিত হিসাবে কিছু টাইপ করতে পারবে, এর ব্যবহার
খাটো সাধারণত ভাল হয়.
আর তা ঠিক করতে পারবো এটা করব কোড এগিয়ে এক ব্লক পদধ্বনি.
সুতরাং এটি অগ্রসর হবে একটি ফাংশন কল পর্যন্ত.
এবং তারপর পরিবর্তে যে ফাংশন মধ্যে ডাইভিং
এবং যে ফাংশন সব দিয়ে যাচ্ছে কোড, এটা শুধু ফাংশন থাকবে.
>> ফাংশন বলা হবে.
এটা তার কাজ হল যাই হোক না কেন.
এটি একটি মান ফিরে আসতে হবে এটা বলা যে ফাংশন.
এবং তারপর আপনি উপর সরানো হবে কলিং ফাংশন এর পরের লাইনে.
আপনি ধাপে করতে চান তাহলে ফাংশনের ভিতর,
পরিবর্তে শুধু থাকার এটা বিশেষ করে, চালানো
আপনি যদি মনে করেন যে সমস্যা যে ফাংশনের ভিতর থাকা পারে,
আপনি, অবশ্যই, একটি বিরতি সেট করতে পারে ভিতরে যে ফাংশন বিন্দু.
আপনি ইতিমধ্যে চালাচ্ছেন অথবা, যদি আপনি করতে পারেন কোড এগিয়ে এক লাইন পইঠা এর ব্যবহার.
>> সুতরাং এই পইঠা হবে এবং ফাংশন মধ্যে ডুব,
পরিবর্তে শুধুমাত্র চালানো আছে এবং ফাংশন উপর অব্যাহত
আপনি ডিবাগিং জন্য করছি যে.
আপনি কি জানতে চান একটি ভেরিয়েবলের মান,
আপনি পি, বা প্রিন্ট টাইপ করতে পারেন, এবং তারপর পরিবর্তনশীল নামের.
আর যে, তোমাদের কাছে প্রিন্ট আউট হবে , GDB পরিবেশের ভিতরে,
পরিবর্তনশীল এর নাম, যে তোমাদেরকে ভগবন্ চলকের মান ছুতা
আপনি নামকরণ করেছি যে.
আপনি প্রতি মান জানতে চান যেখানে থেকে স্থানীয় পরিবর্তনশীল অ্যাক্সেসযোগ্য
আপনি বর্তমানে আছে আপনার প্রোগ্রাম, আপনি তথ্য স্থানীয়দের টাইপ করতে পারেন.
এটা তুলনায় অনেক দ্রুততর তারপর P টাইপ এবং যাই হোক না কেন,
সব আউট তালিকা আপনি অস্তিত্ব জানি যে ভেরিয়েবল.
আপনি তথ্য স্থানীয়দের টাইপ, এবং এটা করতে পারেন আপনার জন্য সবকিছু প্রিন্ট আউট হবে.
পরবর্তী আপ, যা বিটি হয় ফিরে ট্রেস জন্য স্বল্প.
এখন, সাধারণত, বিশেষ প্রথম CS50 মধ্যে,
আপনি কি সত্যিই অনুষ্ঠানে থাকবে না বিটি, বা ফিরে ট্রেস ব্যবহার,
আপনি ফাংশন হচ্ছে না, কারণ অন্য যে ফাংশন কল.
>> আপনি প্রধান কল একটি থাকতে পারে ফাংশন, কিন্তু যে সম্ভবত এটি.
আপনি যে অন্যান্য ফাংশন আছে না আরেকটি ফাংশন, কলিং যা
আরেকটি ফাংশন কল, এবং তাই.
কিন্তু আপনার প্রোগ্রাম আরো পেতে হিসাবে জটিল, এবং বিশেষ করে
আপনি কাজ শুরু হলে recursion সঙ্গে, ফিরে ট্রেস
আপনার দেওয়া একটি সত্যিই দরকারী উপায় হতে পারে ধরনের যেখানে কিছু প্রসঙ্গ পাবেন
আমি আমার প্রোগ্রাম টা.
সুতরাং আপনি আপনার কোড লিখিত করেছি বলে, ও আপনি প্রধান একটি ফাংশন কল যে জানেন
একটি ফাংশন যা কল F, একটি ফাংশন এইচ কল যা গ্রাম.
তাই আমরা বিভিন্ন স্তর আছে পাখির এখানে ঘটছে.
>> আপনাকে ভিতরে করছি আপনার, GDB পরিবেশ,
এবং আপনি আপনার ভিতরে জানি ঘঃ, কিন্তু তোমাকে ভুলে যাব
আপনি যেখানে আপনি পেয়েছেন কি সম্পর্কে আপনি বিটি, বা ফিরে ট্রেস টাইপ করতে পারেন are--,
এবং এটা, এইচ, জি আউট প্রধান চ প্রিন্ট করা হবে অন্য কিছু তথ্য, পাশাপাশি যা
আপনি একটি খেই দেয় যে, ঠিক আছে প্রধান বলা চ, ছ বলা চ, ছ, জ বলা
এবং যে যেখানে আমি বর্তমানে আমার প্রোগ্রাম টা.
সুতরাং এটা সত্যিই দরকারী হতে পারে বিশেষ করে, GDB রহস্যপূর্ণ অন্তরীপ হিসাবে
যাও, একটু অপ্রতিরোধ্য হয়ে কিছু ঠিক যেখানে খুঁজে বের করতে.
অবশেষে, আপনার প্রোগ্রাম করা সম্ভব হলে, যখন আপনি কাজ করছেন বা এটি ডিবাগ
এবং তুমি চুপ কর চান , GDB পরিবেশ থেকে,
তা থেকে বেরিয়ে পেতে জানতে সাহায্য করে.
আপনি প্রশ্ন টাইপ করুন, অথবা খুঁজে পেতে, প্রস্থান করতে পারেন.
এখন, আজকের ভিডিও আগে আমি একটি বগী প্রোগ্রাম প্রস্তুত
আমি কম্পাইল যা বলা buggy1, buggy1.c হিসাবে পরিচিত একটি ফাইল থেকে.
আপনি, এই আশা করতে পারে প্রোগ্রাম আসলে বগী হয়.
কিছু গোলমাল যখন আমি চেষ্টা এবং এটি চালানোর জন্য.
এখন, দুর্ভাগ্যবশত, আমি অনবধানতাবশত আমার buggy1.c ফাইল মুছে ফেলা
তাই যাতে আমার চিন্তা করার জন্য কি, এই প্রোগ্রামের সাথে ভুল করে যাচ্ছে
আমি ব্যবহার করতে যাচ্ছি , GDB ধরনের অন্ধভাবে চেষ্টা
এই প্রোগ্রামের মাধ্যমে নেভিগেট ভুল করে যাচ্ছে জিনিসটা ঠিক কি.
কিন্তু শুধু টুলস ব্যবহার আমরা ইতিমধ্যে সম্পর্কে শিখেছি করেছি
আমরা প্রায় কাছাকাছি চিন্তা করতে পারেন এটা ঠিক কি.
সুতরাং আসুন ওভার আগাইয়া যাক এবং CS50 আইডিই এবং একটি চেহারা আছে.
ঠিক আছে, তাই আমরা এখানে এসেছি আমার এবং CS50 আইডিই পরিবেশ,
এবং আমি একটি সামান্য বিট জুম করব তাই আপনাকে একটু বেশি দেখতে পারেন.
আমার টার্মিনাল উইন্ডোতে, আমি তালিকায় যদি আমার বর্তমান পরিচালক বিষয়বস্তু
ls সঙ্গে, আমরা যে আমি দেখতে পাবেন সোর্স ফাইল একটি দম্পতি আছে
এখানে, সহ পূর্বে buggy1 আলোচনা.
কি ঠিক যখন যায় আমি চেষ্টা এবং buggy1 চালানো.
ওয়েল এর খুঁজে বের করা যাক.
আমি বিন্দু টাইপ বগী, এবং আমি লিখুন আঘাত.
>> সেগমেন্টেশন ফল্ট.
এটা ভালো না.
আপনার যদি মনে থাকে, একটি সেগমেন্টেশন ফল্ট সাধারণত
আমরা মেমরি অ্যাক্সেস যখন ঘটে আমরা স্পর্শ করতে অনুমতি দেওয়া হয় না যে.
আমরা একরকম পৌঁছে গেছেন সীমার বাইরে
কি প্রোগ্রাম, কম্পাইলার, আমাদের দেওয়া হয়েছে.
তাই আগে থেকেই যে একটি খেই টুলবক্স রাখতে
আমরা ডিবাগ প্রক্রিয়া শুরু.
কিছু এখানে একটু ভুল গেছে.
>> ঠিক আছে, তাই আসুন শুরু , GDB পরিবেশ আপ
আমরা চিন্তা করতে পারেন এবং যদি দেখতে ঠিক কি সমস্যা হয়.
আমি আমার পর্দা পরিষ্কার করা যাচ্ছে না এবং আমি GDB টাইপ করা যাচ্ছে না
আবার, GDB পরিবেশে প্রবেশ করার জন্য, এবং প্রোগ্রামের নাম
আমি buggy1 ডিবাগ করতে চান যে.
আমরা পড়ার, একটু মেসেজ পাবেন buggy1 থেকে চিহ্ন, কাজ.
এর মানে হল যে সকল এটি টানা হয় একসাথে সব কোড,
এবং এখন সেটিকে লোড করা হয়েছে , GDB, এবং এটা যেতে প্রস্তুত.
>> এখন, আমি কি করতে চান না?
আপনি কি প্রত্যাহার না প্রথম ধাপে সাধারণত হয়
আমি এই পরিবেশে এর ভিতর আছি পরে?
আশা করছি, আপনি সেট বলেন একটি বিরতি বিন্দু, কারণ
আসলে যে আমি কাজ করতে চান কি.
এখন, আমি পারি না এই জন্য সোর্স কোড
আমার সামনে, যা সম্ভবত হয় না টিপিক্যাল ব্যবহারের ক্ষেত্রে, উপায় দ্বারা.
আপনি সম্ভবত না করবে.
তাই ভালো.
কিন্তু অভিমানী আপনি না, কি কি আপনি কি জানেন যে এক ফাংশন
প্রতি একক সি প্রোগ্রাম বিদ্যমান?
কোন ব্যাপার কিভাবে বড় বা কত জটিল এর মানে হল, এই ফাংশন স্পষ্টভাবে বিদ্যমান.
মুখ্য, ডান?
>> তাই অন্য সব, আমরা করতে পারেন ব্যর্থ প্রধান একটি বিভাজক পয়েন্ট সেট.
এবং আবার, আমি শুধু টাইপ করতে পারে পরিবর্তে বি, প্রধান বিরতি.
আর আপনি জানতে আগ্রহী হন তাহলে আপনি যদি কখনও একটি দীর্ঘ কমান্ড টাইপ আউট
এবং তারপর আপনি বুঝতে পারি যে ভুল জিনিস টাইপ,
এবং আপনি পরিত্রাণ পেতে চান সব আমি ঠিক করেনি,
আপনি যা করবে, কন্ট্রোল ইউ নিতে পারেন সবকিছু মুছে দিন এবং আপনি ফিরিয়ে আনতে
কার্সার লাইনের শুরুতে.
শুধু চেপে ধরে তুলনায় অনেক দ্রুত মুছে ফেলা, বা এটি একটি গুচ্ছ বার আঘাত
ওভার.
>> সুতরাং আমরা প্রধান একটি বিভাজক পয়েন্ট সেট করব.
আর আপনি দেখতে পারেন, এটা আমরা করেছি বলে ফাইল Buggy1.c এ ব্রেক পয়েন্ট সেট,
এবং দৃশ্যত প্রথম লাইন প্রধান কোড লাইন সাত.
আবার, আমরা আছে না এখানে সোর্স ফাইল,
কিন্তু আমি এটা অনুমান করব আমার সত্য বলার.
এবং তারপর, আমি শুধু চেষ্টা করছি এবং R, কর্মসূচি পরিচালনা করছে.
প্রোগ্রাম শুরু.
ঠিক আছে, তাই এই বার্তা একটু রহস্যপূর্ণ.
কিন্তু মূলত কি এখানে ঘটছে তা ঠিক হয়
আমি আমার বিরতি আঘাত করেছি আমাকে বলছে বিন্দু, বিরতি বিন্দু সংখ্যা 1.
>> এবং তারপর, কোড যে লাইন, অনুরূপ কোন ফাইল বা ডিরেক্টরি নেই.
একমাত্র কারণ যে আমি যে বার্তা এইজন্য করছি
আমি অনবধানতাবশত কারণ আমার buggy.c ফাইল মুছে দিয়েছিলাম.
আমার buggy1.c ফাইল অস্তিত্ব বর্তমান ডিরেক্টরির মধ্যে,
সেখানে আসলে যে লাইন ডান আমাকে বলুন কি কোড লাইন
আক্ষরিক সার্চ.
দুর্ভাগ্যবশত, আমি এটা মুছে ফেলা.
আমরা ধরনের নেভিগেট আছে চলুন আরো অন্ধভাবে এই একটু মাধ্যমে.
>> ঠিক আছে, তাই এর দেখতে দিন, কি আমি এখানে কাজ করতে চান না?
ওয়েল, আমি কি স্থানীয় জানতে চাই ভেরিয়েবল হয়তো আমাকে পাওয়া যায়.
আমি আমার কর্মসূচি গ্রহণ করে থাকেন.
এর হতে পারে তা দেখুন ইতিমধ্যে আমাদের জন্য সক্রিয়া.
আমি তথ্য স্থানীয়দের, কোন স্থানীয়দের টাইপ.
ঠিক আছে, যে না, তাই আমার তথ্য একটি টন দিতে.
আমি চেষ্টা এবং একটি পরিবর্তনশীল প্রিন্ট আউট করতে পারে, কিন্তু আমি কোনো ভেরিয়েবলের নাম জানি না.
আমি একটি চিহ্ণিত চেষ্টা করে দেখতে পারেন, কিন্তু আমি প্রধান ভেতরে আছি
তাই আমি তৈরি করিনি জানেন এই মুহূর্তে অন্য ফাংশন কল.
>> আমার একমাত্র বিকল্প মত তাই দেখায় এন বা তাই ব্যবহার এবং ঝাঁপিয়ে শুরু করার.
আমি এন ব্যবহার করা যাচ্ছে না.
তাই আমি এন টাইপ.
আমার ভগবন্, কি এখানে যাচ্ছে.
প্রোগ্রাম সংকেত পেয়েছি, SIGSEGV সেগমেন্টেশন ফল্ট,
এবং তারপর স্টাফ আভা.
আমি ইতিমধ্যে খুবই আনন্দিত.
ওয়েল, আসলে আছে একটি অনেক শিখেছি এখানে করা.
তাই আমরা কি দেখতে পাই না?
এটা কি আমাদের বলে এই প্রোগ্রাম, হয় সম্পর্কে, কিন্তু এখনও না, seg দোষ.
এবং বিশেষ করে, আমি যাচ্ছি এমনকি আরও এখানে জুম করতে,
এটি সম্পর্কে seg ফল্ট সম্পর্কে কিছু strcmp বলা.
>> এখন, আমরা আলোচনা করেছি না পারে ব্যাপকভাবে এই ফাংশন.
আমরা যাচ্ছেন না, কারণ এটা হচ্ছে ÑÑ প্রতি ফাংশন সম্পর্কে কথা বলার জন্য যে
সি মান বিদ্যমান লাইব্রেরি কিন্তু তারা, আপনি সমস্ত উপলব্ধ আছেন
আপনি একটি নিতে, বিশেষ করে যদি reference.cs50.net তাকান.
আর strcmp সত্যিই একটি শক্তিশালী হয় ভিতরে বিদ্যমান ফাংশন
string.h হেডার একটি হেডার ফাইল, যা,
ফাংশন নিবেদিত যে ফাইল সাথে যে কাজ এবং স্ট্রিং নিপূণভাবে.
>> এবং বিশেষ করে, কি strcmp না হয় এটা দুই স্ট্রিং মান তুলনা করা হয়.
তাই আমি দোষ সেগমেন্টেশন সম্পর্কে নই একটি কল উপর এটি মনে strcmp যাও.
আমি এন আঘাত, এবং আসলে আমি মেসেজ পাবেন প্রোগ্রামের সংকেত SIGSEGV দিয়ে শেষ করা
সেগমেন্টেশন ফল্ট. তাই এখন আমি আসলে seg faulted আছে,
এবং আমার প্রোগ্রাম বেশ হয়েছে অনেক কার্যকরভাবে আপ দেওয়া.
এই প্রোগ্রাম শেষে হয়.
এটা ভেঙ্গে এটি বিধ্বস্ত হয়.
তাই অনেক ছিল না, কিন্তু আমি আসলে বেশ একটু জানতে করেনি
এই সামান্য অভিজ্ঞতা থেকে.
আমি কি শিখেছি?
ওয়েল, আমার প্রোগ্রাম বিপর্যস্ত অবিলম্বে প্রায় কাছাকাছি.
আমার প্রোগ্রাম বিপর্যস্ত একটি strcmp কল, কিন্তু আমি
যে কোন লোকাল ভেরিয়েবল আছে না আমার এটি বিপর্যস্ত যে সময়ে প্রোগ্রাম.
তাই কি স্ট্রিং, বা স্ট্রিং, আমি সম্ভবত তুলনা হতে পারে.
আমি কোনো স্থানীয় না থাকে ভেরিয়েবল, আপনি পারে
হয়তো একটি হল আমি সেখানে থাকতে পারে অনুমান সত্য হতে পারে, যা বিশ্বব্যাপী পরিবর্তনশীল.
>> কিন্তু সাধারণত, এটা মনে হয় আমি তুলনা করছি
অস্তিত্ব নেই যে কিছু করার.
সুতরাং আসুন তদন্ত দিন একটু আরও শর্ত থাকে যে.
তাই আমি আমার পর্দা পরিষ্কার করা যাচ্ছে না.
আমি আউট প্রস্থান করার জন্য যাচ্ছি একটি দ্বিতীয় জন্য, GDB পরিবেশ.
এবং আমি ঠিক, চিন্তা করছি, তাই আছে আমার প্রোগ্রাম কোন স্থানীয় ভেরিয়েবল.
আমি পাস করার কথা হয়তো আমি ভাবছি একটি কমান্ড লাইন আর্গুমেন্ট একটি পংক্তি.
তাই আসুন শুধু এই পরীক্ষা করা যাক.
আমি আগে এই কাজ করেন নি.
>> আমি এই প্রোগ্রাম চালানো হতে পারে যদি এর দেখতে দিন একটি কমান্ড লাইন আর্গুমেন্ট সঙ্গে এটি কাজ করে.
হাহ, সেখানে কোন সেগমেন্টেশন ফল্ট.
এটা শুধু আমি এটা মূর্ত আউট যে আমাকে.
তাই হয়তো যে ফিক্স এখানে.
আমি ফিরে যান এবং যদি প্রকৃতপক্ষে, তাকান buggy1.c জন্য প্রকৃত সোর্স কোড,
আমি কি করছি হিসাবে যদিও এটা মনে হয় আমি ছাড়া strcmp একটি কল তৈরি করছি
আসলে argv [1] বিদ্যমান কিনা চেক.
এই আসলে buggy1.c জন্য সোর্স কোড.
তাই আমি সত্যিই প্রয়োজন কি আমার প্রোগ্রাম ঠিক এখানে না,
অভিমানী আমি হয় আমার সামনে দায়ের
শুধু করতে একটি চেক যোগ করতে নিশ্চিত যে argc 2 সমান.
তাই এই উদাহরণস্বরূপ, আবার আমি বলেন, মত ঠিক আছে, একটু একটু কল্পিত হয়?
আপনি সাধারণত যাচ্ছেন না ঘটনাক্রমে আপনার সোর্স কোড মুছে
এবং তারপর চেষ্টা করতে হবে এবং প্রোগ্রাম ডিবাগ.
কিন্তু আশা করছি, এটি দিয়েছে আপনি একটি চিত্রণ
জিনিস ধরণের যে আপনি সম্পর্কে চিন্তা করা যেতে পারে
হিসাবে আপনি আপনার প্রোগ্রাম ডিবাগ করছেন.
>> এখানে বিষয়ক রাষ্ট্র কি?
কি ভেরিয়েবল আমি কি আমার হাতে আছে?
কোথায় ঠিক আমার প্রোগ্রাম কি লাইনে, বিপর্যয়,
কি ফাংশন কি কল?
দ্বার কি ধরনের যে আমাকে সুযোগ দেন?
এবং যে ঠিক মুজিবনগর ধরনের যে আপনি
আপনি যখন পেয়ে করা উচিত আপনার প্রোগ্রাম ডিবাগ সম্পর্কে চিন্তা.
>> আমি ডগ লয়েড আছি.
এটি CS50.