রিয়েল-টাইম ডিবাগিং কৌশলগুলি


18

কোনও পরিবর্তনশীল, সংকলন কোড যা কয়েক মিনিট সময় নেয়, কোডটি কার্যকর করে, বুঝতে পারে যে আপনার টুইটটি ভুল দিকের দিকে ছিল এবং প্রক্রিয়াটি আবারও পুনরাবৃত্তি করার মতো কিছু নেই।

একটি সেশন প্রক্রিয়া চলাকালীন আমি আমার গেম যুক্তিটির সাথে আলাপচারিতা শুরু করতে চাই। আপনি এটি পরিচালনা করার কয়েকটি উপায় কী?

আমি আইওএস, সি / সি ++ এবং সি # / এক্সএনএ এর সমাধানগুলি শুনতে উন্মুক্ত।

উত্তর:


12

আইওএস বিকাশকারীদের জন্য এটি সবেমাত্র আবিষ্কার হয়েছে -

অ্যাসিঙ্কসকেট
আপনি আপনার অ্যাপ্লিকেশনটিতে একটি সার্ভার সেট আপ করেছেন এবং এটি টার্মিনালের মাধ্যমে সংযুক্ত করুন। এরপরে আপনি রিমোট কমান্ডগুলির উপর পাম্প করতে পারেন এবং রিয়েল-টাইমে ভেরিয়েবলগুলি ম্যানিপুলেট করতে শুরু করতে পারেন। খুব চতুর।


4

সম্পূর্ণরূপে বর্ণিত ভাষার সংহতকরণ আপনাকে খুব সহজেই ফ্লাইতে গেম উপাদানগুলি পুনরায় লেখার অনুমতি দেয়।

পাইথন, লুয়া ইত্যাদি এগুলির জন্য স্পষ্টভাবে ব্যবহার করা যেতে পারে। অ্যাঞ্জেল ইঞ্জিন সম্ভবত উদাহরণ হিসাবে কাজ করতে পারে।

হট লোডিং চেক আউট করার আরেকটি উপাদান (মূলত, কোনও ইভেন্ট আপনাকে সম্পদ পরিবর্তিত হয়েছে - কনফিগারেশন ফাইল, একটি শিল্প উপাদান ইত্যাদির কথা বলা বন্ধ করে দেওয়া হয় - এবং আপনি এটি কন্ডিশনারগুলির একটি সিরিজ দিয়ে চালনা করেন যা এটির জন্য এটি পরিবর্তন করে দেয়) নতুনটির সাথে বিদ্যমানটি প্রতিস্থাপনের আগে চূড়ান্ত ফর্ম্যাট।

আমি একটি দ্রুত প্রোটোটাইপিং ইঞ্জিন নিয়ে কাজ করেছি যা গরম লোড ব্যবহার করে এবং এটি একটি আনন্দের বিষয়।


2

এক্সএনএ সহ সি ++, সি #, এবং সি # যতক্ষণ না, ভিজ্যুয়াল স্টুডিওতে চমত্কার ডিবাগিং সরঞ্জাম রয়েছে - কোডের যে কোনও সময়ে রিয়েল টাইমে অ্যাপ্লিকেশনটি বিরতি দিন, যে কোনও সময় ভেরিয়েবলগুলিকে নির্ধারিত মানগুলি দেখুন, ফাংশন কলগুলির মাধ্যমে পদক্ষেপ করুন , কল স্ট্যাক বিশ্লেষণ করুন এবং আরও অনেক কিছু। এছাড়াও, পিক্স এবং সিএলআর প্রোফাইলারের মতো সরঞ্জামগুলি ডাইরেক্টএক্স (পিক্স) এবং সিএলআর ভিত্তিক ভাষা (সিএলআর প্রোফাইলার) এর সাহায্যে বিকাশ করে।

তদতিরিক্ত, গেমগুলির সাথে কাজ করার একটি বিশেষ উপকারী অংশটি হ'ল আমাদের কাছে ডিবাগ পাঠ্য, গ্রাফিক্স ইত্যাদি লেখার জন্য এই দৈত্য অঞ্চল রয়েছে। মেমোরি ব্যবহারের রিয়েলটাইম গ্রাফ, অবজেক্টের সংখ্যা / শীর্ষকোষ আঁকানো, ফ্রেমরেট ইত্যাদি স্ক্রিনে আঁকতে সাধারণ জিনিস।


1
যদিও ভিএস একটি অসামান্য বিকাশের সরঞ্জাম, সাধারণ ডিবাগ করতে সময় লাগে - ব্রেকপয়েন্টগুলিতে শিকার, কোডের মাধ্যমে পদক্ষেপ নেওয়া, ভেরিয়েবল পরিবর্তন করা, প্রবাহ পুনরায় চালু করা। এই প্রশ্নটি কোনও ইন্টারফেস উপাদানটি সরানো, বা কোনও বসের আক্রমণাত্মক অনুপাত ইত্যাদির মতো কাজ করার জন্য তাত্ক্ষণিক
ডেভিড ম্যাকগ্রা

2

সি / সি ++ এ একটি সহজ কৌশলটি হ'ল আপনার সাম্প্রতিক পরিবর্তনকে স্থিতিশীল ভেরিয়েবলের মধ্যে স্থাপন, একটি ব্রেকপয়েন্টে ট্রিগার করা, ডিবাগারে স্ট্যাটিক পরিবর্তন করা এবং এটি প্রস্থান না হওয়া অবধি স্থির থাকে।


যদিও এটি কোনও ফাংশনের অভ্যন্তরে স্থির পরিবর্তনশীল করুন। এটি যদি কোনও বিশ্বব্যাপী স্ট্যাটিক ভিজ্যুয়াল স্টুডিওর মান না দেখাতে পারে।
কাজ

2

এইচটিটিপি লগিং একটি বিশাল সহায়তা, এবং উঠতে এবং চালানো কোনও অসুবিধা নয়। এমনকি আপনি এই চালানোর দ্রুত উপায় হিসাবে গুগল অ্যাপ ইঞ্জিন ব্যবহার করতে পারেন। ডেটা সর্বদা দরকারী।

এগুলি স্ক্রিপ্ট এবং এক্সএমএল ফ্লাইতে আবার লোড করা যেতে পারে এবং পুনরায় সেট করার দরকার নেই। গেমটি নামা না করে তাদের ব্যর্থ হওয়ার অনুমতি দিন। এটি শিল্পী, পরীক্ষক এবং ডিজাইনারকে প্রচুর শক্তি দেয়।

ইন-গেম ডিবাগ মেনু গেম ডিবাগ মেনুতে একটি সাধারণ যা আপনি বাচ্চা হয়ে উঠতে পারেন এবং ইঞ্জিন স্লাইডার এবং গেম স্লাইডার উভয় দিয়েই গেমটি স্থির করতে পারেন। আপনাকে রানটাইমের সময় কী সংখ্যাটি টিক দিতে এবং সম্ভবত এক বা দুটি ডিবাগ ফাংশন, বা তথ্য ডাম্পগুলি সম্পাদন করার অনুমতি দিচ্ছে।

আমি ডেভিডের উত্তরে উল্লিখিত ASYNC সকেটগুলিকেও পছন্দ করি

ব্যবহার করা সহজ আপনার গেমস টিমকে অবশ্যই এই সরঞ্জামগুলিতে যুক্ত করতে এবং এগুলি খুব সহজেই ব্যবহার করতে সক্ষম হতে হবে, বা তারা কেবল ব্যবহার করবে না।


2

আমি জানি শন জেমস ইতিমধ্যে এটি বলেছে । তবে গুরুতরভাবে, ভিজ্যুয়াল স্টুডিও (বিশেষত ডিবাগিং সরঞ্জামগুলি) এর জন্য ভয়ঙ্কর।

আমি এই দিনগুলিতে সি ++ বেশি ব্যবহার করি না, সুতরাং এগুলি সেখানে কতটা কার্যকর হয় সে সম্পর্কে আমি নিশ্চিত নই। তবে সি # এর জন্য (সি # এক্সপ্রেস সহ) আপনার কাছে রয়েছে:

এবং এটি আপনার মনকে ফুঁকতে পারে (যখন আমি এটি সম্পর্কে জানতে পারি তখন এটি আমার গায়ে ফুঁসে উঠেছে):

ইমিডিয়েট উইন্ডোটি আসলে একধরনের হার্ড (এটি ডিবাগ / উইন্ডোজ মেনুতে রয়েছে)।

ভিজ্যুয়াল সি # ডিবাগার ব্যবহারের একমাত্র প্রধান অবক্ষয় হ'ল এটি constমান পরিবর্তন করতে পছন্দ করে না । সুতরাং আমি সাধারণত আমার গেমপ্লে-সম্পর্কিত মানগুলি staticযখন আমি তাদের টুইট করি তখনই তৈরি করি।

(এছাড়াও: দু'জন মনিটর রাখলে অনেক সাহায্য হয়))


এখন আমাকে অবশ্যই স্বীকার করতে হবে যে উপরের পদ্ধতিটিতে আপনার অ্যাপ্লিকেশনটির বিরতি জড়িত - যা কয়েকটি বিশেষভাবে বেআইনী জিনিসগুলির জন্য অসম্পূর্ণভাবে ধীর হতে পারে।

এই বিরল ইভেন্টগুলিতে, আমি যা করি (এক্সএনএ তে) হ'ল কেবল কোডটি কিছুটা হ্যাক করা (সম্ভবত সম্পাদনা এবং চালিয়ে যাওয়া, উপরে হিসাবে ব্যবহার করা) দখল করার জন্য Keyboard.GetState().IsKeyDown()(আসলে এর জন্য আমার কাছে সহজ-প্রকারের মোড়ক রয়েছে) এবং সামঞ্জস্য করুন কীস্ট্রোক দ্বারা মান। আরও জটিল যে কোনও কিছু চেষ্টা করার মতো নয়।


অনুশীলনে আমি সাধারণত যা সবচেয়ে বেশি গুরুত্বপূর্ণ মনে করি তা হ'ল রিয়েল-টাইমে মানগুলি (পরিবর্তিত করার পরিবর্তে) রূপায়িত করতে সক্ষম । এর জন্য আমার একটি দুর্দান্ত ছোট্ট ক্লাস রয়েছে যা ফ্রেমের শেষে আঁকতে লাইন এবং পাঠ্যকে বাফার করতে পারে। এটি দ্রুত প্রোটোটাইপিংয়ের জন্যও কার্যকর।

(এবং, আবারও, রানটাইমের সময় এই দৃশ্যগুলি "সম্পাদনা করুন এবং চালিয়ে যান" সক্ষম হতে পেরে খুব ভাল))


(উত্স: andrewrussell.net )
( এখান থেকে )

আমি আশঙ্কা করছি এই মুহুর্তে প্রকাশের জন্য আমার কাছে "সুন্দর" উত্স নেই (সম্ভবত পরে)। তবে এটি মূলত কেবলমাত্র লাইনগুলির তালিকা ( এই বৃত্তাকার লাইনের লাইব্রেরির জন্য ) এবং স্ট্রিংগুলি (এক্সএনএর অন্তর্নির্মিত স্প্রিটব্যাচের জন্য)। কেবল এটিকে public staticঅন্য কোথাও তৈরি করুন এবং যথাযথ ট্রান্সফর্ম দিয়ে সবকিছু আঁকুন যাতে সবকিছু "ওয়ার্ল্ড স্পেস" এ উপস্থিত হয় (এবং তারপরে পরবর্তী ফ্রেমের জন্য তালিকাগুলি সাফ করুন)।


1

সি / সি ++ এর জন্য একটি সাধারণ প্রতিবিম্ব সিস্টেম লিখতে মোটামুটি তুচ্ছ। এইভাবে আপনি গেমটিতে আপনার সমস্ত ভেরিয়েবলগুলি ব্রাউজ করতে পারেন (এটি কোনও নেটওয়ার্ক সরঞ্জাম, কীবোর্ড বা জয়প্যাড সহ) এটি আপনার হৃদয়ের সামগ্রীতে পরিবর্তন করতে পারে। এটি আমার পক্ষে কাজ করে তবে উপরের সমস্ত উত্তর সমানভাবে বৈধ।

যোগ করার জন্য সম্পাদিত: এই থ্রেডটি এখন টুইট সম্পর্কিত, থ্রেড-শিরোনাম অনুযায়ী ডিবাগিংয়ের নয়।


0

আমি একাধিক স্টুডিওতে দেখেছি এমন একটি সমাধান একটি বহিরাগত ডিবাগিং অ্যাপ্লিকেশন যা নেটওয়ার্কটি ব্যবহার করে আপনার প্রোগ্রামে সংযুক্ত থাকে। এই অ্যাপ্লিকেশনটি নির্দিষ্ট উন্মুক্ত ভেরিয়েবলগুলি দেখায় এবং আপনাকে এগুলিকে রিয়েল টাইমে সম্পাদনা করার অনুমতি দেয়। নতুন ভেরিয়েবল যুক্ত করা গেম কোডটিতে কিছু ম্যাক্রো যুক্ত করার বিষয়টি।

গেম সাইড ম্যাক্রোস, সার্ভার / ক্লায়েন্ট প্রোটোকল (যে সমাধানগুলি আমি কেবল সিরিয়ালের এক্সএমএল পিছনে পিছনে দেখেছি) এবং ক্লায়েন্টকে লেখার প্রাথমিক সেটআপটি বড়। তবে এটি অত্যন্ত কার্যকর, বিশেষত যোগাযোগের জন্য নেটওয়ার্ক ব্যবহার করার অর্থ আপনি যে কোনও প্ল্যাটফর্মে কাজ করতে পারেন।


0

ভেরিয়েবলের লোডিং এবং রিডিংটিকে টেক্সটফাইলে বাঁধুন এবং একটি নির্দিষ্ট কী-বাইন্ডিং বা কনসোল থেকে কমান্ড ব্যবহার করে এটি ফায়ার করুন।

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