একটি নির্দিষ্ট বৈশিষ্ট্য প্রয়োগ করে এমন উত্স কোড কীভাবে সনাক্ত করবেন? [বন্ধ]


14

আমি ভাবছিলাম যে কোনও কোড কোনও ডেস্কটপ অ্যাপ্লিকেশনটিতে একটি নির্দিষ্ট বৈশিষ্ট্য প্রয়োগ করেছে তা সনাক্ত করার জন্য কিছু কৌশল কী।

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

তবে আপনি ডেস্কটপ অ্যাপ্লিকেশনগুলিতে এটি কীভাবে করবেন? কমপক্ষে, পুরো কোডবেসে ডুব না দিয়ে?


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

এবং আমি ব্রেকপয়েন্টগুলি কোথায় সেট করব?
পাই_স্ক্রিপ্ট

ব্রেকপয়েন্টের সেটআপ সম্পূর্ণভাবে আপনার অ্যাপ্লিকেশন এবং এটি কীভাবে সংগঠিত হয় তার উপর নির্ভর করে।

2
ব্যাকবোন.জেএস এবং টেমপ্লেটগুলির মতো নতুন অবজেক্ট-ওরিয়েন্টেড সিস্টেমগুলি সহ, যেখানে আরও জনপ্রিয় হয়ে উঠছে এটি "পরীক্ষা করা" এবং ওয়েব ইন্টারফেসটি কোথায় এবং কীভাবে তৈরি হয়েছিল তা দেখতে কিছুটা শক্ত হতে পারে।
NoBugs

1
@ জিফো আপনি উদাহরণস্বরূপ, ফাইল-> অ্যাপ্লিকেশনটিতে খুলুন (লিব্রেফিসের লেখককে বলতে দিন) আপনি কীভাবে খুঁজে পাবেন যে এর পিছনে কল ক্রমটি কী?
পাই_স্ক্রিপ্ট

উত্তর:


21

পিছনে ট্র্যাকিং

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

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

পেশাদাররা ও কনস

  • কল স্ট্যাকটি চালিয়ে যাওয়া এবং আপনি কোথা থেকে কীভাবে এসেছেন তা দেখতে সর্বদা সহজ।
  • লক্ষ লক্ষ শর্ত থাকতে পারে যা শেষ পয়েন্টে পৌঁছানোর আগে সত্য হওয়া দরকার। আপনি যদি ইতিমধ্যে শেষ পয়েন্টটি জানেন তবে আপনি নিজেকে প্রচুর কাজ বাঁচিয়েছেন।
  • ফিচারটি যদি ভেঙে যায়। আপনি কখনই শেষ পয়েন্টে পৌঁছাতে পারবেন না এবং এর কারণটি বের করার চেষ্টা করে সময় নষ্ট হতে পারে।

শেষ পয়েন্ট আবিষ্কার

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

ফরোয়ার্ড ট্র্যাকিং

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

পেশাদাররা ও কনস

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

স্টার্ট পয়েন্ট আবিষ্কার

আপনি কীওয়ার্ড, ব্যবহারকারীর ইন্টারফেস শনাক্তকারী (বোতামের আইডি, উইন্ডোর নাম) বা বৈশিষ্ট্যের সাথে সম্পর্কিত ইভেন্ট শ্রোতাদের সন্ধান করা সহজ ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি পূর্বাবস্থা ফিরিয়ে আনতে ব্যবহৃত বোতামটি দিয়ে শুরু করতে পারেন ।

নির্মূল প্রক্রিয়া

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

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

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

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

পেশাদাররা ও কনস

  • মাঝারি পয়েন্টগুলি প্রায়শই কোডের প্রথম পিস হয় যা আপনি যখন বৈশিষ্ট্যটির কথা ভাবেন তখন আপনার মাথায় headুকে যায়। আপনি নিজেকে বলে "আহা, এটি কাজ করতে XXXX ব্যবহার করতে হবে।"
  • মধ্যম পয়েন্টগুলি সূচনা পয়েন্টগুলি সহজতম প্রকাশ করতে পারে ।
  • মধ্যম পয়েন্টগুলি সিঙ্ক্রোনাইজেশন বা থ্রেডিং পরিবর্তনের দ্বারা হারিয়ে যাওয়ার পরে কোনও বৈশিষ্ট্যে ট্রেলটি ধরার সহজ উপায় হতে পারে।
  • মধ্য পয়েন্টগুলি আপনাকে এমন কোডে নিয়ে যেতে পারে যেগুলির সাথে আপনি পরিচিত নন। কী চলছে তা শিখতে আপনার জন্য সময় ব্যয় করা।

ধন্যবাদ ম্যাথিউ, দুর্দান্ত পদ্ধতি। তবে আপনি কীভাবে একটি সূচনাপুস্তকটি খুঁজে পাবেন (দুঃখিত তা যদি আমি বাদে সকলের কাছে সুস্পষ্ট হয়)?
পাই_স্ক্রিপ্ট 21

@py_script আপনার কোন প্রোগ্রামিং ল্যাঙ্গুয়েজে সমস্যা হচ্ছে?
দশমিক

এটি আমার যে নির্দিষ্ট সমস্যা রয়েছে তা নয়, তবে আমার মূল ডেস্কটপ প্রোগ্রামিং ভাষা জাভা, তাই এটি দিয়ে চলুন
py_script 20

11

ধরে নিই যে বৈশিষ্ট্যটি কোনও বাটন বা মেনুর মতো কিছু ইউআই টুস্টির সাথে আবদ্ধ, আমি যা করতে চাই তা অনুসরণ করে (খুব ক্লান্তিকর তবে এটি কার্যকর)। এটি উত্স কোডটি অনুসন্ধান করছে, কোনও ডিবাগার ব্যবহার করছে না

  1. বোতামে (আশাবাদী স্বতন্ত্র) পাঠ্যের জন্য অনুসন্ধান করুন, যেমন "সুপার ফিচার এক্স 3"।
  2. এটি সম্ভবত কিছু ধ্রুবক সহ কোনও ফাইলের মধ্যে রয়েছে SUPER_BUTTON_3 = "Super Feature X3" । ভবিষ্যতের রেফারেন্সের জন্য, এই ফাইলটির নামটি মনে রাখবেন।
  3. বিমূর্ততার আরও একটি স্তর (এমনকি দুটি) হতে পারে, বোতামটি ব্যবহার করে "সত্যিকারের" স্ট্রিংটি পেতে অনুসন্ধান চালিয়ে যান। ভবিষ্যতের জন্য এটি কীভাবে করা হয়েছে তা দ্রষ্টব্য।
  4. এখন সেই ধ্রুবকটি অনুসন্ধান করুন। আশা করি আপনি এখন বোতামটি খুঁজে পেয়েছেন। তারা এখানে অ্যাকশনলিস্টনারকে সংযুক্ত করতে পারে connect (আমি এখানে জাভা-ইএস নিচ্ছি, ওয়াইএমএমভি, তবে ধারণাটি এখনও ধারণ করে)
  5. প্রয়োজনে সেই বোতামটি অনুসন্ধান করুন এবং শেষ পর্যন্ত এটি কোথায় খুঁজে পাবেন এটি শ্রোতার সাথে সংযুক্ত হয়ে যায়।
  6. সম্ভবত সেই শ্রোতা ধ্রুবকের উপর নির্ভর করে অন্য শ্রোতাদের ("আসল" কার্যকারিতা) সত্যই পুনঃনির্দেশ করে, যদি তাই হয় তবে তা / অন্যথায় বা কেস স্টেটমেন্ট অনুসরণ করুন। দ্রষ্টব্য : যদি কোনও কেন্দ্রীয় প্রেরণযোগ্য জিনিস থাকে তবে ব্রেকআপপয়েন্ট সেটআপ করার জন্য এটি দুর্দান্ত জায়গা
  7. শেষ অবধি, আপনার আসল কোডে থাকা উচিত।

যেমন @ এমন উল্লেখ করেছে, কখনও কখনও একটি ডিবাগার সহজ হয় ...



3
  • আপনি যদি কোনও সম্পর্কিত কোড খুঁজে পেতে পারেন তবে আপনি এটি সম্পূর্ণরূপে প্রতিশ্রুতিবদ্ধ বা নিকটস্থ কমিটগুলি যুক্ত করেছে তা দেখানোর জন্য আপনার উত্স নিয়ন্ত্রণ সফ্টওয়্যারটি ব্যবহার করতে পারেন। এটি আপনাকে সেই বৈশিষ্ট্যটি বাস্তবায়নের জন্য প্রয়োজনীয় সমস্ত কিছু দেখানো উচিত।

  • কিছু সূচনা পয়েন্ট দেখার সহজ উপায় হ'ল আপনার কোডবেইসটি বোতামের টেক্সটটি সন্ধান করার মাধ্যমে গ্রেপ করা।

  • প্রায়শই লোকেরা তাদের প্রতিবেদন বার্তাগুলিতে তাদের ইস্যু ট্র্যাকার থেকে একটি ইস্যু আইডি রাখবে। যদি আপনি বৈশিষ্ট্যটির অনুরোধটি বর্ণনা করে কোনও সমস্যা খুঁজে পেতে পারেন তবে আপনি সেই ইস্যু আইডি দিয়ে কমিটগুলি অনুসন্ধান করতে পারেন।


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