Chrome বিকাশ সরঞ্জাম: জাভাস্ক্রিপ্ট থেকে ফাইল [ভিএম] M


139

আমি আমার জাভাস্ক্রিপ্ট ফাইলটিতে একটি ব্রেকপয়েন্ট যুক্ত করেছি (jaydata.js) এবং "পরবর্তী ফাংশন কলের উপরে ধাপে" চাপছিলাম। এটি যখন একটি লাইনে পৌঁছেছিল:

},

"[ভিএম] (8312)" শিরোনামে অন্য একটি ফাইল পপ আপ হয়েছে। আমি "পরবর্তী ফাংশন কলে পদক্ষেপ নিতে" ক্লিক করতে থাকি এবং এখন আমার স্ক্রিনটি হ'ল:

এখানে চিত্র বর্ণনা লিখুন

"[ভিএম] (এক্সএক্সএক্সএক্সএক্স") শিরোনামে এই অদ্ভুত এবং রহস্যময় স্ক্রিপ্টগুলি কী এবং সেগুলি কোথা থেকে আসে?


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

উত্তর:


112

[VM] (scriptId)এর কোন বিশেষ অর্থ নেই। কোডটি আলাদা করতে আমাদেরকে সাহায্য করার জন্য এটি একটি ছদ্মবেশী নাম যা কোনও ফাইলের নামের সাথে সরাসরি বাঁধা না, যেমন কোডগুলি evalএবং বন্ধুদের ব্যবহার করে তৈরি করা কোড ।

অতীতে, এই সমস্ত স্ক্রিপ্টগুলি সবেমাত্র লেবেলযুক্ত ছিল (program)

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

আপডেট 2015-06-25

[VM] (scriptId)VMscriptId কিছুক্ষণ আগে নতুন নামকরণ করা হয়েছিল , এবং মানটি আবার পরিবর্তিত হওয়ার ক্ষেত্রে অনুসন্ধানের ফলাফলের সরাসরি লিঙ্ক এখানে ।


1
ক্রোম কি লাইভ জেএস ফাইলের পরিবর্তে [ভিএম] ফাইলটিকে হিট করবে? যদি তাই হয় তবে কেন?
ম্যাট

@ ম্যাট "লাইভ জেএস ফাইলের পরিবর্তে [ভিএম] ফাইলটি হিট করুন" এর অর্থ কী?
রব ডাব্লু

@ রবডাব্লু অবহেলা; আমার ব্রাউজারটি জেএস ফাইলটি ক্যাশে করছিল (আমার ক্যাশে বুস্টার আপডেট হওয়া সত্ত্বেও)।
ম্যাট

1
[VM] (scriptId)VMscriptId কিছুক্ষণ আগে নতুন নামকরণ করা হয়েছিল , তবে আমি উত্তরটিকে বর্তমান অবস্থায় রেখেছিলে প্রশ্নটি অকার্যকর করতে না পারে। সর্বশেষতম কোডসার্ক লিঙ্কটি হ'ল: cs.chromium.org/%22VM%5C%22%20+%22 (মান আবার পরিবর্তিত হলে অনুসন্ধানের ফলাফলের সরাসরি লিঙ্ক: ক্রোমিয়াম. googles Source.com/chromium/blink/+/… )
রব ডাব্লু

আমি সম্প্রতি কোনও সমস্যা ছাড়াই এই সমস্যার মুখোমুখি হয়েছি - এটি আইফ্রেমের ব্যবহারের সাথে সম্পর্কিত বলে মনে হচ্ছে। এর জন্য আমার প্রমাণ হ'ল আমি যখন আইফ্রেমে কোডে একটি ব্রেকপয়েন্ট স্থাপন করি তখন আমি [ভিএম] সমস্যাটি পাই তবে যখন আমি নিজের উইন্ডোতে আইফ্রেমটি খুলি তখন ব্রেকআপপয়েন্টটি ঠিক ঠিক ঠিক আঘাত করি। এটি নিশ্চিত করুন যে এটি উত্তরে বর্ণিত হিসাবে Eval এর "বন্ধু "গুলির একজন হিসাবে যোগ্যতা অর্জন করে।
বিপদ

42

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


3
এটি যদিও ডিবাগিংয়ের জন্য স্তন্যপান হয়। যদি আমি এর সাথে স্ক্রিপ্ট ট্যাগ ব্যবহার করি src=/test.jsতবে একটি ত্রুটি সৃষ্টি করে যা টেস্ট.জেজে ফিরে আসে, ট্রেসব্যাকটিতে সঠিক ফাইলের নাম থাকে তবে এর পরে, স্ট্যাকট্রেসে ভিএম যাদু থাকে। এটি স্ট্যাকট্রেসের ফাইলগুলির জন্য একাধিকবার উত্স কোডটি [একই উত্স থেকে] পাওয়া অসম্ভব করে তোলে এবং আপনি এগুলি ক্যাশে করতে পারবেন না, কারণ আপনি জানেন না যে ভবিষ্যতে স্ট্যাকট্রেসগুলির মধ্যে কোন ফাইলটি। এটি ডিভাইসগুলিতে স্থির হয়েছে তবে ওয়েব অ্যাপসে নয়।
কার্ল স্মিথ

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

37

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

//@ sourceURL=dynamicScript.js

ওয়েবকিট, ফায়ারব্যাগ বা আইই 8 বিকাশকারী সরঞ্জামের মতো কিছু ডিবাগার দ্বারা গতিশীল লোডিং জাভাস্ক্রিপ্ট ডিবাগ করা সম্ভব?


9
সিনট্যাক্সটি পরিবর্তিত হয়েছে, এখন এটির: // # উত্স URL = ডায়নামিকস্ক্রিপ্ট.জেএস
থিয়াগোপন্টে

1
এটি জাভাস্ক্রিপ্টের শেষেও হওয়া উচিত, শুরু নয়।
স্প্লাক্টার

এই জাতীয় কিছু খুঁজছেন। ধন্যবাদ
ডেভিড কিয়েরানস 2:44

ধন্যবাদ! এটি এত দরকারী!
ইভ যুয়ান

4
ফায়ারফক্স ডিবাগ সরঞ্জামগুলিতে এটি বলেছেUsing //@ to indicate sourceURL pragmas is deprecated. Use //# instead
নাইটো

6

আপনি যদি ক্রোমে প্রোগ্রামগতভাবে ইঞ্জিনযুক্ত জেএস ফাইলগুলি ডিবাগ করতে চান তবে আপনি debugger;বিবৃতিটি ব্যবহার করতে পারেন , এটি আপনার স্ক্রিপ্টটি কোথায় তা খুঁজে পাওয়ার চেয়ে দ্রুত এবং উত্সরল দিয়ে কোনও ফাইল তৈরি করার চেয়েও দ্রুত ।

এটি ব্রেকআপপয়েন্টের মতো কাজ করে এবং অটোমেটিকাল ক্রোম উত্স ট্যাবে আপনার কোডটি পিনপয়েন্ট করে যেখানেই আপনি debugger;বিবৃতি ব্যবহার করবেন ।

ডিবাগার;

নোট করুন যে স্ক্রিপ্টটির উত্স একটি ভিএমএক্সএক্সএক্স ফাইল।


এটি প্রশ্নের উত্তর দেবে না।
গ্রান্ট মিলার

আমার খারাপ, আমি নিজেকে এই প্রশ্নের অন্যান্য উত্তর দিয়ে যেতে দেব।
Rodrirokr

1
সুপার! এটি ঠিক আমি যা চেয়েছিলাম। জেএস ইঞ্জিন দ্বারা কোন ভিএম আপনার কোড sertedোকানো হয়েছিল তা খুঁজে বের করার দরকার নেই।
ওলেগ বোলডেন

এই উত্তর এবং প্রশ্নের মধ্যে সংযোগ কি?
রবীন্দ্র থোরাট

সঙ্গে debugger;বিবৃতি তিনি demystify যেখানে রহস্যময় 'শীর্ষক "[VM- র] (XXXX এর" অদ্ভুত আর রহস্যজনক স্ক্রিপ্ট' ইচ্ছা করিলে থেকে আসতেছেন পারবেন না।
Rodrirokr

4

আমি দেখতে পেয়েছি যে কিছু ক্রোম এক্সটেনশন থেকে ভিএম জেনারেট হয়েছিল - তারা পৃষ্ঠায় সিএসএস / জেএস সন্নিবেশ করায় এবং Chrome এটি চালানোর জন্য ভিএম ফাইলগুলি ব্যবহার করে।


0

যখন আপনি চাইল্ড উইন্ডো (iframe) উত্সটি ডিবাগ করবেন যা পরবর্তীকালে আপনার উত্স ফাইলটি লোড করা হয় তখন ভিএম উপসর্গ এবং হলুদ ব্যাকগ্রাউন্ডও পাবেন।


0

আমি একই সমস্যা মধ্যে দৌড়ে। সমস্যাটি হ'ল আমার অ্যাপ্লিকেশনটির কোডটি দুর্ঘটনাক্রমে ব্ল্যাকবক্স হিসাবে বিবেচিত হয়েছিল। আমি কোডটিতে পদক্ষেপ নেওয়ার চেষ্টা করার সময় এটি এই VMXXXXট্যাবগুলি খোলার চেষ্টা করে ।

আমার অ্যাপ্লিকেশনটির জেএস ফাইলের জন্য ব্ল্যাকবক্স সেটিংটি সরিয়ে দেওয়ার পরে, আমি আমার কোডটি দিয়ে সফলভাবে পদক্ষেপ নিতে পারি could


0

এটি প্রতিরোধের জন্য

(function ()
 {
  var originalEval = eval;
  eval =
   function (script)
   {
    return originalEval(script + "\n//# sourceURL=blackbox-this.js");
   }
 }());

এবং তারপরে ব্ল্যাকবক্স ^.*blackbox-this.js$

স্ট্রিং পেলে সেটইন্টারভাল / সেটটাইমআউটের ক্ষেত্রে একই (তবে যাইহোক, এটি একটি খারাপ অভ্যাস, ডান ?;))

এটা কি আপনার জন্য কাজ করে?


-1

আমি যখন আমার কৌণিক অ্যাপ্লিকেশনটি ডিবাগ করছিলাম তখন আমারও একই সমস্যা ছিল। অনেকগুলি ভিএম স্ক্রিপ্ট দেখে যা ব্ল্যাকবক্স করা যায় না তা সত্যই ডিবাগ করতে দীর্ঘ সময় নিচ্ছিল। আমি বরং ডিবাগ করতে মোজিলা / আইই এক্সপ্লোরার বেছে নিয়েছি।

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