Emacs ক্র্যাশ করার আরও ভাল ডিবাগিং?


9

যদিও ইমাম্যাকস (24.3.93.1) ফাইন্ডার থেকে লঞ্চ করা হয়েছে, যদি টার্মিনাল সংস্করণ চালু হয়:

/Applications/Emacs.app/Contents/MacOS/Emacs -nw

Emacs এর সাথে ক্র্যাশ হয়েছে:

Fatal error 11: Segmentation fault[1] 51512 abort /Applications/Emacs.app/Contents/MacOS/Emacs -nw

দেখে মনে হচ্ছে ইনি.এল-তে একক লাইন দ্বারা সমস্যা দেখা দিয়েছে,

(set-face-attribute 'default nil :font "Menlo-16")

যদি সেই লাইনটি মন্তব্য করা হয় তবে ইমাসের টার্মিনাল সংস্করণটিও সূক্ষ্মভাবে শুরু হবে।

ক্র্যাশটির কারণটি নির্ধারণ করতে আমাকে কয়েক ঘন্টা সময় নিয়েছে (আমার আরম্ভের অর্ধেক অর্ধেক কেটে ফেলছে)।

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

  1. সাধারণভাবে বলতে গেলে, ক্র্যাশিং ইম্যাক্সকে ডিবাগ করার আরও ভাল কোনও উপায় আছে কি? সম্ভবত এমন কোনও ধরণের ক্লাইব ডিবাগার ব্যবহার করছেন যা আরও বর্ণনামূলক বার্তা প্রিন্ট করবে?
  2. কেন সেই লাইনটি ক্লাইকের মাধ্যমে ইমাকগুলি ক্র্যাশ করছে, তবে এটি যদি অনুসন্ধানকারীর কাছ থেকে চালু করা হয় না?

এটি কি সত্যিই ক্লায়েন্ট থেকে চালু হচ্ছে? বা টার্মিনাল সংস্করণ চালু করে যা সমস্যার সৃষ্টি করছে? সেট-ফেস-এ্যাট্রিবিউটটির আশেপাশে কিছু ত্রুটি ধরা চেষ্টা করুন? (শর্ত-কেস এরর (সেট-ফেস-এ্যাট্রিবিউট ...) (ত্রুটি (বার্তা "উফস!")))
নিক ফেরিয়ার

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

@ নিক-ফেরিয়ার: আমার এখন ইন ডি.এল-তে মাত্র একটি লাইন রয়েছে, (condition-case err (set-face-attribute 'default nil :font "Menlo-16") (error (message "Whoops!")))তবুও আমার একই ত্রুটি বার্তায় একই ক্রাশ হয়েছে। কোনও অতিরিক্ত এলিস্প-উত্সাহিত বার্তা নেই।
জিএসএল

@ ম্যালারাবাবা: আমি emacsformacosx.comGNU Emacs 24.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2013-03-13 on bob.porkrind.org থেকে চেষ্টা করেছি , এবং ইমাকস ক্রাশ হয় না। সুতরাং, এটি পরবর্তী সংস্করণগুলিতে একটি বাগ হতে হবে। আমি একটি বাগ রিপোর্ট দায়ের করব।
gsl

1
হিসাবে @Malabarba নির্দেশিত: ফাইল একটি বাগ রিপোর্ট (অবিলম্বে): M-x report-emacs-bug। ইম্যাকস বিকাশকারীগণ সমস্যার ডিবাগ করতে সহায়তা করতে আপনি যা করতে পারেন তার মাধ্যমে আপনাকে নেতৃত্ব দেবে।
ড্র হয়েছে

উত্তর:


6

আপনাকে পরের বার এটি ট্র্যাক করতে সহায়তা করতে

এর আগে আমার সাথে এই ঘটনা ঘটেছে। এমন একটি পরিস্থিতি ছিল যেখানে string-to-intইমাকগুলি ক্র্যাশ হয়ে গেছে এবং এটি ঠিক করতে কয়েক ঘন্টা সময় লেগেছিল।
দুঃখিত, আমি একটি সুন্দর উত্তর দিতে পারে না, কিন্তু ইমাস্যাক ক্র্যাশগুলি সি কোডের গভীরে ঘটে যায় এবং এ জাতীয় সমস্যাগুলি সনাক্ত করার জন্য কোনও বিল্ট-ইন সরঞ্জাম উপলব্ধ নেই।

আমি মনে করি এটির সাথে ডিবাগ gdbকরা সম্ভব, তবে এর কার্যকারিতা আপনার দক্ষতার উপর নির্ভর করবে gdb

আপনার আসলে যা করা দরকার তা হ'ল

একটি বাগ রিপোর্ট ফাইল করুন

খাঁটি এলিস্প কোড (নন-বাইট-সংকলিত) কখনই ইমাক্স ক্রাশ করার কথা নয়। এটি একটি হ্যাং সৃষ্টি করতে পারে (কিছু অসীম লুপের কারণে) এবং এটি ইমাক্সকে স্মৃতি থেকে সরিয়ে দিতে পারে। তবে, এর বাইরেও, কোনও ক্র্যাশ একটি বাগ

M-x report-emacs-bug

আপনার বিল্ড এবং সিস্টেমের বিবরণ সহ আপনি যে ন্যূনতম কাজের উদাহরণটি নিয়ে এসেছেন কেবল তা সরবরাহ করা দয়াবান বিকাশকারীদের জন্য যথেষ্ট সহায়তা হওয়া উচিত।


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

4

জিডিবির সাথে ডিবাগের রেফারেন্স হিসাবে আপনি বিল্ড ট্রি থেকে src / temacs ব্যবহার করতে চাইবেন। এটি প্রাক-ডাম্প এলিস্প ছাড়াই ইম্যাকস যা ডিবাগারকে বিভ্রান্ত করে।

gdb --args src/temacs -nw

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