জিডিবি ব্যবহার করে মেমরির সামগ্রীগুলি কীভাবে সংশোধন করবেন?


87

আমি জানি যে মেমরিটি অ্যাক্সেস করতে এবং পড়তে আমরা বেশ কয়েকটি আদেশ ব্যবহার করতে পারি: উদাহরণস্বরূপ, মুদ্রণ, পি, এক্স ...

তবে আমি কীভাবে কোনও নির্দিষ্ট স্থানে (জিডিবিতে ডিবাগ করার সময়) মেমরির বিষয়বস্তুগুলি পরিবর্তন করতে পারি?


মেমরি একটি স্ট্রিং লিখুন: stackoverflow.com/questions/19503057/...
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


124

সবচেয়ে সহজ একটি প্রোগ্রামের ভেরিয়েবল নির্ধারণ করছে ( জিডিবি: অ্যাসাইনমেন্ট দেখুন ):

অথবা আপনি ঠিকানার মাধ্যমে নির্বিচারে (লেখার যোগ্য) অবস্থান আপডেট করতে পারেন:

আরো আছে. ম্যানুয়াল পড়ুন ।


4
স্বেচ্ছাসেবীর মেমরির অবস্থানগুলি অ্যাক্সেস করার আগে আমার একটি প্রোগ্রামের পরিবর্তনশীল সেট করা দরকার? আমি ঠিক এখনই দ্বিতীয় সেট কমান্ড চালাতে পারি না?
স্পাইডি

এছাড়াও, set (str[6]) = 'c'কাজ করে, যদি আপনার কোনও অ্যারে থাকে, যেমনchar str[]
এক্সেলিটস

30

যেমন নিকোলাই বলেছে আপনি ভেরিয়েবলের মান পরিবর্তন করতে gdb 'set' কমান্ড ব্যবহার করতে পারেন।

মেমরির অবস্থানগুলি পরিবর্তন করতে আপনি 'সেট' কমান্ডও ব্যবহার করতে পারেন। যেমন নিকোলাইয়ের উদাহরণটি প্রসারিত:

এটি যে কোনও বৈধ পয়েন্টারের জন্য কাজ করা উচিত এবং কোনও উপযুক্ত ডেটা টাইপে কাস্ট করা যেতে পারে।


set {char[100]}(0x00) = ""0x00 ঠিকানায় 100 বাইটের মেমরি
সাফ করে

16

এখানে সরবরাহ করা উত্তরগুলি প্রসারিত করা হচ্ছে।

আপনি কেবল set idx = 1একটি ভেরিয়েবল সেট করতে করতে পারেন , তবে সেই বাক্য গঠনটি সুপারিশ করা হয় না কারণ ভেরিয়েবলের নামটি একটি সেট সাব-কমান্ডের সাথে সংঘর্ষে লিপ্ত হতে পারে। উদাহরণ হিসাবে set w=1বৈধ হবে না।

এর অর্থ হল আপনার সিনট্যাক্সটি পছন্দ করা উচিত: set variable idx = 1বা set var idx = 1

সর্বশেষে তবে সর্বনিম্ন নয়, আপনি কেবল আপনার বিশ্বাসযোগ্য পুরাতন মুদ্রণ কমান্ডটি ব্যবহার করতে পারেন, কারণ এটি কোনও অভিব্যক্তির মূল্যায়ন করে। পার্থক্যটি হ'ল তিনি প্রকাশের ফলাফলটিও মুদ্রণ করেন।

আপনি এখানে জিডিবি সম্পর্কে আরও পড়তে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.