পদক্ষেপ 1: চলমান emacs -Q
আপনার প্রথমে আপনার কাস্টমাইজেশনগুলি ছাড়াই ইম্যাক চালানো দরকার। আপনি যদি ভ্যানিলা ইম্যাক্সে সমস্যাটি পুনরুত্পাদন করতে পারেন তবে এটি বাস্তবে ইমাক্সে নিজেই একটি বাগ হতে পারে। এটি বিরল, তবে আমরা এটি প্রথম পদক্ষেপ হিসাবে বাতিল করি।
আপনি যদি -Q
পতাকাটি দিয়ে কমান্ড লাইন থেকে ইমাস শুরু করেন , অর্থাত্, emacs -Q
আপনার কোনও স্থানীয় কাস্টমাইজেশন লোড না করে আপনি একটি খালি বা 'ভ্যানিলা' ইম্যাক পাবেন। আপনার সমস্যা কি এখনও ঘটে? যদি তা হয় তবে "একটি বাগ রেসিপি সরবরাহ করা" এ যান।
পদক্ষেপ 1 বি: সমস্যা যদি কোনও প্যাকেজ নিয়ে থাকে?
আপনার সমস্যা যদি কোনও নির্দিষ্ট প্যাকেজের সাথে নির্দিষ্ট থাকে তবে স্পষ্টতই আপনি সেই প্যাকেজটি লোড না করে পুনরুত্পাদন করতে পারবেন না। তবে আপনি কেবলমাত্র প্যাকেজটিই লোড করতে চান, আপনার সমস্ত কনফিগারেশন নয়। এটি করতে, emacs -Q
আবার চালনা করুন এবং নীচের মতো একটি শর্ট স্ক্রিপ্ট প্রস্তুত করুন:
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
package1
আপনি যে প্যাকেজটি লোড করতে চান তার নামটি প্রতিস্থাপন করুন । আপনার যদি একাধিক প্যাকেজ লোড করতে হয় তবে সেই অনুযায়ী স্ক্রিপ্টটি পরিবর্তন করুন:
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
এই কোডটি লোড করতে, আপনি এটি *scratch*
বাফারে পেস্ট করতে পারেন এবং কল করতে পারেন M-x eval-buffer
। (বা কোনও বাফার, যতক্ষণ না এর মধ্যে অন্য কোনও কোড না থাকে!)।
এই মুহুর্তে, আপনি প্যাকেজ (গুলি) লোড করেছেন এবং কেবলমাত্র প্যাকেজগুলি যা আপনি পরীক্ষা করছেন। আপনি যদি এখনই সমস্যাটি পুনঃ উত্পাদন করতে পারেন তবে "একটি বাগ রেসিপি সরবরাহ করা" এ যান।
পদক্ষেপ 2: আপনার মধ্যে একটি বাগ সন্ধান করা .emacs
আপনি এখন নিশ্চিত করেছেন যে সমস্যাটি আপনার কনফিগারেশনের কিছু থেকে আসছে ("ঘরের ভিতর থেকে কল আসছে!")। আপনার কনফিগারেশনটি কয়েক হাজার লাইন দীর্ঘ হতে পারে এবং অনেকগুলি বিভিন্ন ফাইল লোড হতে পারে। সমস্যাটি সন্ধান করতে, আপনি বাইনারি অনুসন্ধান করবেন, জিনিসগুলিকে সঙ্কুচিত করার জন্য একবারে অর্ধেক কোড মন্তব্য করবেন। 1
- বিকল্প
emacs
ছাড়াই আপনার নিয়মিত ইম্যাকগুলি খুলুন -Q
।
- আপনার কনফিগারেশন ফাইলটি খুলুন (সাধারণত
~/.emacs
বা .emacs.d/init.el
যদি আপনি এটি চেষ্টা করে দেখতে না পান C-h v user-init-file
)
- ফাইলের প্রথম অর্ধেকটি নির্বাচন করুন:
C-space
চিহ্নটি সেট করতে, অঞ্চলটি প্রসারিত করতে আধ-রাস্তা নীচে স্ক্রোল করুন
- নির্বাচিত অঞ্চলটি মন্তব্য করুন:
M-;
এবং ফাইলটি সংরক্ষণ করুন
- প্রথম ইমাস চলমান রেখে একটি নতুন
emacs
(আপনার পরীক্ষা ইম্যাকস ) খুলুন । পরীক্ষা ইম্যাকগুলি আপনার কনফিগারেশনের হ্রাস করা সংস্করণটি পড়বে।
- পরীক্ষার ইমাসগুলিতে সমস্যাটি পুনরুত্পাদন করার চেষ্টা করুন
- আপনি যদি এটি পুনরুত্পাদন করতে না পারেন তবে পরীক্ষা ইম্যাকগুলি বন্ধ করুন এবং আপনার মূল ইম্যাক্সের
undo
সাথে মন্তব্যটি রেখে দিন C-/
এবং বাকি কোডের অর্ধেক মন্তব্য করুন। একটি নতুন পরীক্ষা ইম্যাক খুলুন এবং আবার চেষ্টা করুন।
- যদি আপনি সমস্যাটি পুনরুত্পাদন করতে পারেন তবে অবশিষ্ট কোডের অর্ধেকটি মন্তব্য করুন এবং দেখুন সমস্যাটি এখনও থেকে যায় কিনা।
- সমস্যাটি পুনরুত্পাদন করার জন্য আপনার কনফিগারেশনের ক্ষুদ্রতম বিটটি না পাওয়া পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করুন।
যদি আপনার সমস্যাটি একটি নির্দিষ্ট প্যাকেজটির সাথে থাকে তবে আপনাকে অবশ্যই কোডটি ছেড়ে দিতে হবে যা অবশ্যই সেই প্যাকেজটি নিঃশর্ত লোড করে।
যদি আপনার কনফিগারেশন ফাইলটি অন্য ফাইলগুলি লোড করে, আপনি সেই ফাইলগুলিতেও নিজের অনুসন্ধান প্রসারিত করতে পারেন।
এই মুহুর্তে, আপনি খুঁজে পেতে পারেন যে সমস্যাটি কেবল একটি লাইন বা দুটি কোডের কারণে। এমনকি আপনি নিজেরাই এটি ঠিক করতে সক্ষম হতে পারেন। যদি তাই হয়, অভিনন্দন, আপনি কিছু শিখেছি! অন্যথায়, তিন ধাপ এগিয়ে যান।
পদক্ষেপ 3: একটি বাগ রেসিপি সরবরাহ করা
এই মুহুর্তে, আপনার এখানে পোস্ট করার জন্য একটি বিশদ বাগের রেসিপি সরবরাহ করতে সক্ষম হওয়া উচিত। এটি অন্তর্ভুক্ত করা উচিত:
- আপনার ইমাস সংস্করণ (আপনি এটি ইম্যাক্স সহ এটি থেকে পেতে পারেন)
M-x emacs-version
- আপনার অপারেটিং সিস্টেম (উইন্ডোজ #, ম্যাক, লিনাক্স বিতরণ)
- যদি প্রযোজ্য হয় তবে আপনার সাথে লড়াই করা প্যাকেজের সংস্করণ
- নির্দিষ্ট সহ কি, সমস্যা প্রকট প্রয়োজনীয় পদক্ষেপ ঘটতে আশা , এবং কি আসলে ঘটবে ।
উদাহরণস্বরূপ, আমি এই জাতীয় প্রশ্ন পোস্ট করতে পারি:
আমার সুপার-মোডে সমস্যা হচ্ছে। আমি যখন ব্যবহার করি তখন M-x sm-compile-code
এটি আমার পেপাল অ্যাকাউন্ট থেকে প্রত্যাহার করে।
ধাপ পুনর্গঠন কর:
সুপার-মোড লোড করুন:
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- এর সাথে একটি নতুন ফাইল খুলুন
C-x C-f my-code
- কোডের একটি লাইন প্রবেশ করান:
10 goto 10
আমি এটি সুপার-সংকলক এবং আমার প্রোগ্রাম সংকলন আশা করি। পরিবর্তে, আমি মিনিবাসে একটি বার্তা দেখতে পাই "পেপাল থেকে সুপার-মোড লেখকের কাছে 100 ডলার স্থানান্তরিত হয়েছে"
জিএনইউ ইমাকস 25.1.50.3 দেবিয়ান
লিনাক্স
সুপার-মোড সংস্করণ 3.1415
1 বাগ হান্টার প্যাকেজ, এই সঙ্গে আপনাকে সাহায্য পারে (আধা) স্বয়ংক্রিয়ভাবে আপনার init ফাইলের bisecting।
emacs -Q
প্রথম পদক্ষেপ হিসাবে অনুরোধ করে । আমি এই প্রশ্নগুলি নতুন ব্যবহারকারীদের জেনেরিক সহায়তা হিসাবে এই প্রশ্নগুলির লিঙ্ক করার জন্য কিছু হিসাবে লিখেছি।