বিপরীত ডিবাগিং কেন খুব কম ব্যবহৃত হয়? [বন্ধ]


56

২০০৯ সালে জিডিবি বিপরীত ডিবাগিংয়ের জন্য সমর্থন বাস্তবায়িত করেছিল (জিডিবি .0.০ সহ)। আমি ২০১২ অবধি এ সম্পর্কে কখনও শুনিনি Now এখন আমি এটি নির্দিষ্ট ধরণের ডিবাগিং সমস্যার জন্য অত্যন্ত দরকারী বলে মনে করি। আমি ইচ্ছে করেছিলাম যে আমি এর আগে শুনেছি।

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

আপনি কি এমন কোনও প্রোগ্রামিং সম্প্রদায়ের কথা জানেন যেখানে বিপরীত ডিবাগিংয়ের ব্যবহার প্রচলিত?

পেছনের তথ্য:


47
ঐ এটি বিদ্যমান যারা জানেন না সুবিধার জন্য, কি হল বিপরীত ডিবাগিং?
ম্যাসন হুইলারের

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

1
এটির মূল্যের জন্যই: এটি আপনি যা বুঝতে পেরেছেন তার চেয়ে অনেক বেশি পুরানো - মাইক্রোসফ্ট এটি কুইকসিতে সমর্থন করেছিল (1989 বা '90, যদি মেমরিটি দেয় তবে)।
জেরি কফিন

41
@ ম্যাসনভিয়েল, স্পষ্টত বিপরীত ডিবাগিং কোডগুলিতে বাগ যুক্ত করার কাজ। আমি ওপি-র মতবিরোধের সাথে একমত নই যে এটি একটি অস্বাভাবিক অনুশীলন।
বেন লি

3
@ বেনলি, আমরা সেই রিবাগিং কল করি।
ওল্ডফার্ট

উত্তর:


26

একটির জন্য, রেকর্ডিং সহ ডিবাগ মোডে চালানো এমনকি সাধারণ ডিবাগ মোডের তুলনায় খুব ব্যয়বহুল; এটি অনেক বেশি স্মৃতি গ্রাস করে।

লাইন স্তর থেকে ফাংশন কল স্তরে গ্রানুলারিটি হ্রাস করা সহজ। উদাহরণস্বরূপ, গ্রহণের স্ট্যান্ডার্ড ডিবাগার আপনাকে "ফ্রেমে ড্রপ করতে" অনুমতি দেয় যা মূলত সমস্ত প্যারামিটারের পুনরায় সেট করে ফাংশনটি শুরু করতে ফিরে আসে (গাদাতে কিছুই করা হয় না, আবার finallyব্লকগুলি কার্যকর হয় না) , সুতরাং এটি সত্য বিপরীত ডিবাগার নয়; সে সম্পর্কে সতর্ক থাকুন)।

নোট করুন যে এটি এখন বেশ কয়েক বছর ধরে উপলব্ধ এবং হট-কোড প্রতিস্থাপনের সাথে হাতে কাজ করে।


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

2
এটি আরআর (আরআর- প্রজেক্ট.অর্গ ) অবধি আছে । আরআর ব্যবহার করে একটি এক্সিকিউশন রেকর্ড করার সময় গতি সবেই ধীর হয়। তারপরে আপনি আপনার পছন্দের আইডিই ( github.com/mozilla/rr/wiki/Using-rr-in-an-IDE ) এ নজরদারিগুলি পুনরায় খেলতে পারেন, পদক্ষেপ নিতে পারেন, রিওয়াইন্ড করতে পারেন ... আপনি নিজের কোডটি যেভাবে ডিবাগ করবেন তা কখনই হবে না একই।
jyavenard

11

ইতিমধ্যে উল্লিখিত হিসাবে, জিডিবি'র বিপরীতমুখী ডিবাগিংয়ের সাথে পারফরম্যান্স মূল উদাহরণ, জিজিপের মতো কিছু চালানো দেশীয়ভাবে চলার তুলনায় 50,000x এর ধীরগতি দেখায়। তবে বাণিজ্যিক বিকল্প রয়েছে: আমি পূর্বাবস্থায় ফেরা undo.io এর জন্য কাজ করি এবং আমাদের UndoDB পণ্য একই কাজ করে তবে 2x এরও কম ধীর গতিতে হয়। অন্যান্য বাণিজ্যিক রিভার্সিবল ডিবাগারগুলিও উপলব্ধ।


1
আকর্ষণীয়, আমি অবশ্যই চেষ্টা করব। বেশ কয়েকটি নিবন্ধে বলা হয়েছে যে এটি অ-বাণিজ্যিক ব্যবহারের জন্য নিখরচায় তবে আপনার হোমপৃষ্ঠায় এটি নিশ্চিত করার মতো কোনও তথ্য আমি পাইনি। এটা কি এখনও সত্য? আপনার অনুমোদিততা প্রকাশের জন্য ধন্যবাদ।
ফিলিপ ক্লেন

2
UndoDB এর স্টার্টার এবং পেশাদার সংস্করণগুলির জন্য দামগুলি কী কী? আমি এগুলি UndoDB সংস্করণ পৃষ্ঠায় দেখছি না।
tcrosley

3
আপনি ছেলেরা কীভাবে মজিলার সাথে তুলনা করছেন rr?
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

10

প্রযুক্তির পছন্দ এবং পণ্যগুলির পর্যালোচনার জন্য, আমি প্রায় এক বছর আগে লিখেছি এবং (এবং এর পরে কিছু ফলো-আপ) লিখেছি এমন একটি ব্লগ পোস্ট দেখুন see

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

এবং এই সত্য যে জিডিবির "সস্তা ডিফল্ট" প্রায় অসাধারণভাবে ধীর এবং বেশ কয়েকটি সাধারণ টার্গেট সিস্টেম ব্যতীত সমস্ত কিছুর জন্য বেশ কয়েকটি স্থায়িত্বের সমস্যা রয়েছে।


4

টোটাল ভিউ ডিবাগারের বিক্রয় প্রকৌশলী হিসাবে আমার অভিজ্ঞতা থেকে, লোকেরা জানেন যে এটি বিদ্যমান তবে তারা (গ্রহণযোগ্য বা না) মন্দা নির্বিশেষে তারা কাজ করে না বলে মনে করে।

কেমব্রিজ বিশ্ববিদ্যালয় সম্প্রতি "বার্ষিক 41 বিলিয়ন ডলার রিভার্স ডিবাগিং ব্যয় ব্যয় গ্লোবাল ইকোনমি" শিরোনামে একটি সমীক্ষা করেছে ।

এবং জিডিবিতে ফিরে এসেছি, শুনেছি (প্রচুর পরিমাণে) যে ধীরগতি "বাস্তব জীবনের" অ্যাপ্লিকেশনটিতে এটিকে যথেষ্ট অকেজো করে তোলে।

আমি ব্যক্তিগতভাবে "হ্যালো ওয়ার্ল্ড!" এর চেয়ে বেশি অ্যাপ্লিকেশনগুলিতে বিপরীত ডিবাগিং ব্যবহার করে আরও বেশি লোকের কাছ থেকে শুনতে আগ্রহী!


4
আমি মনে করি স্টাডিকে পড়াশোনা করার ভান করে 'অ্যান্ডো সফটওয়্যার' স্প্যামের চেয়ে এই স্টাডিকে যুক্ত করা আরও ভাল।
বুলওয়ার্সেটর

1
আমার আগের চাকরিতে, আমি একটি বিপরীত ডিবাগার ( ghs.com/products/Timemachine.html ) তৈরিতে কাজ করেছি । আমরা ডিবাগারটি অভ্যন্তরীণভাবে ভারী ব্যবহার করেছি এবং আমি আপনাকে বলতে পারি এটি অবিশ্বাস্য ছিল। অবশ্যই এটি সত্যই লোমশ জাতি অবস্থাতে দুর্দান্ত ছিল, তবে এটি এর চেয়ে বেশি ছিল। বিপরীত ডিবাগিং সর্বদা চালু থাকে, ডিবাগিং পরিবর্তন সম্পর্কে আপনার মানসিকতা। আপনি কম পুনরাবৃত্তি করুন এবং আপনি কীভাবে আপনার কোডটি পরীক্ষা করেন সে সম্পর্কে আপনি কম যত্নশীল হতে পারেন। আপনি মৃত্যুদণ্ড কার্যকর করার জন্য রানও সংরক্ষণ করতে পারেন এবং কাউকে এটি প্রেরণ করতে পারেন, তাই অন্য ব্যক্তির কোডগুলিতে বাগগুলি খুঁজে পাওয়ার জন্য এটি দুর্দান্ত।
স্পিড প্লেন 15

2

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

আমি যেটি প্রকাশ করতে চাই তা হচ্ছে আপনি কেন এই কৌশলটি এত বেশি প্রয়োগ করেননি বা সম্পর্কিত সমস্যাগুলি খুব কমই স্পষ্টভাবে আলোচনা করা হয়েছে তা ভেবেই আপনি একা নন।

সুতরাং আসুন এখানে দুটি খুব গুরুত্বপূর্ণ ধারণা জোর দেওয়া:

1. একটি প্রোগ্রামিং সিস্টেম বুঝতে এটি রাষ্ট্রকে সুস্পষ্ট করতে সহায়ক

২. এমনকি আরও বুঝতে একটি প্রোগ্রামিং সিস্টেমের পুনরায় খেলতে থাকা অবস্থা (ইভেন্টগুলি) অনেক সাহায্য করতে পারে।

সমস্যাটি সমাধান করে এমন কিছু উত্স এখানে দেওয়া হয়েছে যা সমস্যার জন্য প্রস্তাবিত বা নকশাকৃত সমাধানগুলি (জটিল সিস্টেমে রাষ্ট্রের সাথে আচরণ করে):

ট্যারের বিটের বাইরে, কাগজ: http://shaffner.us/cs/papers/tarpit.pdf মূল ধারণা: এড়ানো, বিচ্ছিন্ন করা বা রাষ্ট্রকে সুস্পষ্ট করা

-সিকিউআরএস http://www.cqrs.nu/ এটি দুটি ধারণার সংমিশ্রণ: কমান্ড ক্যোয়ারী পৃথককরণ এবং ইভেন্ট সোর্সিং। বিভিন্ন বাস্তবায়ন বিদ্যমান (জাভা, সি #, স্কালা)। টেট সিকোয়েন্সগুলির পুনরায় প্লে করা এবং একটি ডোমেন মডেলের বিকাশ এখানে গুরুত্বপূর্ণ ভূমিকা পালন করছে।

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

সুতরাং আপনি সব ভাল এবং ভাল বলতে পারেন কিন্তু কে আসলে CQRS এবং FRP ব্যবহার করে? আমি বলব (আইএমও কারণ আমার কাছে কংক্রিট নম্বর নেই) আসলে প্রচুর সংস্থাগুলির ঠিক এটিই যে তারা কাজটি জানেন না তাদের এই পরিভাষা রয়েছে। হয়তো আপনি কিছুটা গুগল করেছেন এবং আপনি এমন উদ্যোগ থেকে শুনেছেন যা সিকিউআরএস ব্যবহার করে, সেখানে ইতিমধ্যে কয়েকটি সাফল্যের গল্প রয়েছে। এফআরপি খুব ধীরে ধীরে বৃদ্ধি পাচ্ছে উদাহরণ হিসাবে আমি নেটফ্লিক্সটি দিতে পারি: http://techblog.netflix.com/2013/02/rxjava-netflix-api.html যা কেবলমাত্র আরএক্সের একটি বাস্তবায়ন প্রকাশ করেছে যা প্রকৃতপক্ষে নেট ভিত্তিক (তবে রয়েছে একটি জাভাস্ক্রিপ্ট বাস্তবায়ন)। সুতরাং জটিল পদ্ধতিগুলি বুঝতে এবং তাদের আরও উন্নত করার জন্য লোকেরা আজ ইতিমধ্যে এই কৌশলগুলি ব্যবহার করছে। এজন্য তারা বিপরীত ডিবাগিং কৌশল ব্যবহার করে।

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