কিভাবে জাভাস্ক্রিপ্ট কলার ফাংশন লাইন নম্বর পেতে? কীভাবে জাভাস্ক্রিপ্ট কলার উত্স ইউআরএল পাবেন?


109

আমি জাভাস্ক্রিপ্ট কলার ফাংশন নাম পেতে নিম্নলিখিত ব্যবহার করছি:

var callerFunc = arguments.callee.caller.toString();
callerFuncName = (callerFunc.substring(callerFunc.indexOf("function") + 8, callerFunc.indexOf("(")) || "anoynmous")

লাইন নম্বরটি আবিষ্কার করার কোনও উপায় আছে যা থেকে পদ্ধতিটি বলা হয়েছিল?

এছাড়াও, জাভাস্ক্রিপ্ট ফাইলটির নামটি পাওয়ার যে পদ্ধতিটি বলা হয়েছিল সেগুলির কোনও উপায় আছে কি? নাকি সোর্স ইউআরএল?


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

হ্যাঁ. এখানে একটি ক্রস-ব্রাউজার ফাংশন যা প্রতিটি ব্রাউজারের মালিকানাধীন পদ্ধতিগুলি ব্যবহার করে: github.com/eriwen/javascript-stacktrace [স্থির লিঙ্ক]
স্কটগুলি

উত্তর:


99

এটি ক্রোম / কিউটিউইউভিউতে আমার জন্য কাজ করে

function getErrorObject(){
    try { throw Error('') } catch(err) { return err; }
}

var err = getErrorObject();
var caller_line = err.stack.split("\n")[4];
var index = caller_line.indexOf("at ");
var clean = caller_line.slice(index+2, caller_line.length);

নোডেও কাজ করে। এটি আপনার কাস্টম লগ () ফাংশনটির মধ্যে পপ করুন (যা আপনার প্রয়োজন মতো অন্যান্য দরকারী ওয়ার্কআউন্ডগুলি যুক্ত করে - যেমন ক্রোম অ্যারে লগিংয়ের জন্য স্থির) এবং যেখানেই আপনি লগ () বলেছেন সেখান থেকে এখনও লাইন নম্বরগুলি রেখে দিন।
মাইকম্যাকানা

60
ত্রুটি নিক্ষেপ করার দরকার নেই; কেবল এটি তৈরি করা যথেষ্ট:var caller_line = (new Error).stack.split("\n")[4]
এলিওটিটিসিএবল

2
দেখতে - অন্য অনুরূপ উত্তর একটি মুক্তিযোদ্ধা / ওয়েবকিট পেতে "আদর্শায়িত" প্রতিক্রিয়া সঙ্গে এই পরামর্শ একীভূত stackoverflow.com/a/14841411/1037948
drzaus

1
ফ্যান্টমজেএস-এও কাজ করে, তবে আপনাকে এটি ফেলে দিতে হবে, অন্যথায় "স্ট্যাক" বৈশিষ্ট্যটি ত্রুটিতে সেট করা নেই।
জোশুয়া রিচার্ডসন

1
ইমেল সাফারির মতো কিছু ব্রাউজারগুলিতে @ELLIOTTCABLE সত্যই আপনাকে ব্যতিক্রম ছোঁড়াতে হবে না! তাহলে কেন করবেন না?
arctelix

26

কঙ্গাক্সের সমাধান অকারণে চেষ্টা করার চেষ্টা করে .c আপনার যদি জাভাস্ক্রিপ্টের কোনও কিছুর লাইন নম্বর অ্যাক্সেস করার প্রয়োজন হয় (যতক্ষণ আপনি ফায়ারফক্স বা অপেরা ব্যবহার করছেন) কেবল অ্যাক্সেস করুন (new Error).lineNumber


11
হাই, এই অ্যাডন করার জন্য ধন্যবাদ। আপনি কি জানেন যে পূর্ববর্তী কল থেকে লাইন নম্বর পাওয়া সম্ভব? যাক পদ্ধতিটি A কে বি কল করে এবং এখন BI তে জানতে চান যে A এর অধীনে কোন লাইনে কল করা হয়েছিল?
তাল

85
এটি টিক দেওয়া হয়েছে, তবে কলারের কার্যকারিতাটির লাইন নম্বর কীভাবে পাওয়া যায় তা প্রশ্নের উত্তর দেয় না ।
মাইকমেকানা

3
এছাড়াও, এটি অত্যন্ত সীমাবদ্ধ। একটি ত্রুটি নিক্ষেপ করা এবং ত্রুটি-স্ট্যাকের রিজেক্স ব্যবহার করা ভাল সমাধান যা সমস্ত আধুনিক ব্রাউজারে উপলব্ধ। আপনি সহজেই সেই পথ, ফাইল, লাইন এবং কলামটি বের করতে পারেন। সমস্যা নেই.
arctelix

13

আমি অবাক হয়ে গিয়েছিলাম যে এই উত্তরগুলির বেশিরভাগই ধরে নিয়েছে যে আপনি সাধারণ ক্ষেত্রেও কেবলমাত্র সাহায্যকারী ডিবাগ ট্রেসগুলি না করে একটি ত্রুটি পরিচালনা করতে চেয়েছিলেন।

উদাহরণস্বরূপ, আমি এই জাতীয় একটি console.logমোড়ক ব্যবহার করতে চাই:

consoleLog = function(msg) {//See https://stackoverflow.com/a/27074218/470749
    var e = new Error();
    if (!e.stack)
        try {
            // IE requires the Error to actually be thrown or else the 
            // Error's 'stack' property is undefined.
            throw e;
        } catch (e) {
            if (!e.stack) {
                //return 0; // IE < 10, likely
            }
        }
    var stack = e.stack.toString().split(/\r\n|\n/);
    if (msg === '') {
        msg = '""';
    }
    console.log(msg, '          [' + stack[1] + ']');        
}

এটি আমার কনসোলে নিম্নলিখিতগুলির মতো একটি আউটপুট মুদ্রণ শেষ করে:

1462567104174 [getAllPosts@http://me.com/helper.js:362:9]

Https://stackoverflow.com/a/27074218/ এবং সঠিক লাইনের নম্বর সহ কনসোল.লগের জন্য একটি উপযুক্ত মোড়কে দেখুন ?


1
ফায়ারফক্স ব্রাউজারের জন্য কাজ করে তবে নোড.জেএস এর জন্য কাজ করে না
জিপার

1
নোডের অধীনে আপনাকে স্ট্যাক লগ করতে হবে [2]
মনিকা মেভেনক্যাম্প

5

এটি প্রায়শই বর্তমান প্রসঙ্গ থেকে ত্রুটি নিক্ষেপ করে অর্জিত হয়; তারপরে lineNumberএবং fileName(যা কিছু ব্রাউজারের আছে) এর বৈশিষ্ট্যগুলির জন্য ত্রুটিযুক্ত বস্তুর বিশ্লেষণ করে

function getErrorObject(){
  try { throw Error('') } catch(err) { return err; }
}

var err = getErrorObject();

err.fileName;
err.lineNumber; // or `err.line` in WebKit

ভুলে যাবেন না যে callee.callerসম্পত্তি হ্রাস করা হয়েছে (এবং সত্যই এটি ইসএমএ তৃতীয় সংস্করণে ছিল না। প্রথম স্থানে)।

এছাড়াও মনে রাখবেন যে ফাংশন ডিসম্প্লেশনটি বাস্তবায়ন নির্ভর হিসাবে নির্দিষ্ট করা হয়েছে এবং তাই বেশ অপ্রত্যাশিত ফলাফল হতে পারে। আমি এখানে এবং এখানে এটি সম্পর্কে লিখেছি ।


ধন্যবাদ, আমার প্রয়োজনীয় অ্যাপ্লিকেশনটিতে এই কোডটি যুক্ত করা কিছুটা সমস্যাযুক্ত বলে মনে হচ্ছে। (কিছু জেএস ট্রেসিং ফ্রেমওয়ার্ক) আপনি কি অন্য কোনও পদ্ধতি জানেন যা আমি ব্যবহার করতে পারি না তা অবহিত নয়?
তালুক

অবহেলিত উপর নির্ভর না করে আপনার ত্রুটি অবজেক্টটি পরীক্ষা করতে সক্ষম হওয়া উচিত callee.caller
কঙ্গাক্স

আপনার ত্রুটি নিক্ষেপ করার দরকার নেই। স্ক্রিপ্টে বর্তমান লাইন নম্বরটি অ্যাক্সেস করার জন্য আপনি কেবলমাত্র (নতুন ত্রুটি) .lineNumber ব্যবহার করেন।
এলি গ্রে

@ এলিজাহ এফএফ 3 এ আমি যা দেখছি। অন্যদিকে ওয়েবকিট lineকেবল ত্রুটি নিক্ষেপ করলেই জনপ্রিয় হয়।
কঙ্গাক্স

Callee.caller এর বিকল্প কি? আমার যদি প্রয়োজন হয় ফাংশনটির নাম?
তাল

4

মনে হচ্ছে আমি একদম দেরী করেছি :) তবে আলোচনাটি বেশ আকর্ষণীয় তাই এখানে চলেছে ... ধরে নেওয়া যায় আপনি একটি ত্রুটি হ্যান্ডলার তৈরি করতে চান এবং আপনি নিজের ব্যতিক্রম হ্যান্ডলার শ্রেণীর মতো ব্যবহার করছেন:

function  errorHandler(error){
    this.errorMessage = error;
}
errorHandler.prototype. displayErrors = function(){
    throw new Error(this.errorMessage);
}

এবং আপনি আপনার কোডটি এভাবে মুড়িয়ে রাখছেন:

try{
if(condition){
    //whatever...
}else{
    throw new errorHandler('Some Error Message');
}
}catch(e){
    e.displayErrors();
}

খুব সম্ভবত আপনার একটি পৃথক .js ফাইলে ত্রুটি হ্যান্ডলারটি থাকবে।

আপনি লক্ষ্য করবেন যে ফায়ারফক্স বা ক্রোমের ত্রুটিতে কোড লাইন নম্বর (এবং ফাইলের নাম) কনসোলে দেখানো হয়েছে এমন লাইন (ফাইল) যা 'ত্রুটি' ব্যতিক্রম ছুঁড়ে ফেলেছে এবং 'ত্রুটিহ্যান্ডলার' ব্যতিক্রম নয় যা আপনি সত্যিকার অর্থে ডিবাগিং করতে চান সহজ। আপনার নিজস্ব ব্যতিক্রম ছুঁড়ে ফেলা দুর্দান্ত তবে বড় প্রকল্পগুলিতে তাদের সনাক্তকরণ একটি সমস্যা হতে পারে, বিশেষত যদি তাদের অনুরূপ বার্তা থাকে। সুতরাং, আপনি যা করতে পারেন তা হ'ল আপনার ত্রুটি হ্যান্ডলারের একটি খালি ত্রুটিযুক্ত বস্তুর একটি রেফারেন্স পাস করা এবং সেই উল্লেখটি আপনার কাছে থাকা সমস্ত তথ্য ধারণ করবে (উদাহরণস্বরূপ ফায়ারফক্সে আপনি ফাইলের নাম এবং লাইন নম্বর ইত্যাদি পেতে পারেন .. ; ক্রোমে আপনি ত্রুটির উদাহরণের 'স্ট্যাক' সম্পত্তিটি পড়লে অনুরূপ কিছু পান)। দীর্ঘ গল্প সংক্ষিপ্ত, আপনি এই জাতীয় কিছু করতে পারেন:

function  errorHandler(error, errorInstance){
    this.errorMessage = error;
    this. errorInstance = errorInstance;
}
errorHandler.prototype. displayErrors = function(){
    //add the empty error trace to your message
    this.errorMessage += '  stack trace: '+ this. errorInstance.stack;
    throw new Error(this.errorMessage);
}

try{
if(condition){
    //whatever...
}else{
    throw new errorHandler('Some Error Message', new Error());
}
}catch(e){
    e.displayErrors();
}

এখন আপনি আসল ফাইল এবং লাইন নম্বর পেতে পারেন যা আপনাকে কাস্টম ব্যতিক্রম ছুঁড়ে ফেলেছে।


4

লাইন নম্বরটি আসলে স্থির কিছু, তাই আপনি যদি লগিংয়ের জন্য কেবল এটি চান তবে এটি আকাঙ্ক্ষার মতো কিছুতে প্রস্রোসেস করা যেতে পারে। আমি একটি ছোট গাল্প প্লাগইন লিখেছি যা ঠিক তা করে:

var gulp = require('gulp');
var logLine = require('gulp-log-line');
gulp.task('log-line', function() {
    return gulp.src("file.js", {buffer : true})
    //Write here the loggers you use.
        .pipe(logLine(['console.log']))
        .pipe(gulp.dest('./build'))

})

gulp.task('default', ['log-line'])

এটি কনসোল.লগ থেকে সমস্ত লগে ফাইলের নাম এবং লাইন সংযুক্ত করবে, তাই console.log(something)হয়ে যাবে console.log('filePath:fileNumber', something)। সুবিধাটি হ'ল এখন আপনি আপনার ফাইলগুলি একত্রী করতে পারবেন, সেগুলি স্থানান্তর করতে পারবেন ... এবং আপনি এখনও লাইনটি পাবেন


এটি পরিস্থিতিগুলির জন্য দুর্দান্ত পরামর্শের মতো বলে মনে হয় যেখানে ট্রান্সপ্লেলার ব্যবহৃত হয় (যেমন, টাইপস্ক্রিপ্ট ব্যবহার করার সময়)। ধন্যবাদ!
অ্যান্ডি কিং

4

আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন তবে এখন এমন একটি পদ্ধতি বলা হয়েছে console.trace("Message")যা আপনাকে লাইন নম্বর এবং পদ্ধতি কলগুলির শৃঙ্খলা দেখিয়ে দেবে যা আপনি যে বার্তাটি দিয়েছিলেন তার সাথে লগইন করেছিল। জাভাস্ক্রিপ্ট লগিং কৌশল সম্পর্কে আরও তথ্য এখানে ফ্রেইকোডেক্যাম্প এবং এই মিডিয়াম ব্লগ পোস্টে উপলব্ধ


3

আপনি যদি ডিবাগিং উদ্দেশ্যে, বা কেবল বিকাশের সময় (কোনও কারণে বা অন্য কোনও কারণে) লাইন নম্বরটি জানতে চান তবে আপনি ফায়ারবগ (একটি ফায়ারফক্স এক্সটেনশন) ব্যবহার করতে পারেন এবং একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারেন

সম্পাদনা করুন :

যদি আপনাকে কোনও কারণে উত্পাদনে এটি করতে প্রয়োজন হয় তবে প্রতিটি ফাংশন এটি চালু আছে কিনা তা ট্র্যাক করার জন্য আপনি নিজের জাভাস্ক্রিপ্ট ফাইলগুলি প্রাক-প্রক্রিয়া করতে পারেন। আমি এমন কিছু ফ্রেমওয়ার্ক জানি যা কোডের কভারেজটি এটি ব্যবহার করে (যেমন জেএসকভারেজ ) find

উদাহরণস্বরূপ, আসুন বলি যে আপনার আসল কলটি হ'ল:

function x() {
  1 + 1;
  2 + 2;
  y();
}

আপনি এটি তৈরি করতে একটি প্রিপ্রোসেসর লিখতে পারেন:

function x() {
  var me = arguments.callee;
  me.line = 1;
  1 + 1;
  me.line = 2;
  2 + 2;
  me.line = 3;
  y();
}

তারপরে y(), আপনি arguments.callee.caller.lineযে লাইনটি থেকে ডেকেছিলেন তা জানতে, যেমন:

function y() {
  alert(arguments.callee.caller.line);
}

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

3

এটি আমি এইভাবেই করেছি, এটি ফায়ারফক্স এবং ক্রোম উভয় ক্ষেত্রেই পরীক্ষা করেছি। এটি ফাংশনটি যেখান থেকে ডেকে আনা হয়েছে সেই স্থানের ফাইলের নাম এবং লাইন নম্বর পরীক্ষা করা সম্ভব করে।

logFileAndLineNumber(new Error());

function logFileAndLineNumber(newErr)
{
   if(navigator.userAgent.indexOf("Firefox") != -1)
   {
      var originPath = newErr.stack.split('\n')[0].split("/");
      var fileNameAndLineNumber = originPath[originPath.length - 1].split(">")[0];
      console.log(fileNameAndLineNumber);
   }else if(navigator.userAgent.indexOf("Chrome") != -1)
   {
      var originFile = newErr.stack.split('\n')[1].split('/');
      var fileName = originFile[originFile.length - 1].split(':')[0];
      var lineNumber = originFile[originFile.length - 1].split(':')[1];
      console.log(fileName+" line "+lineNumber);
    }
}

2

এই ফোরামে পাওয়া তথ্যের ভিত্তিতে আমি যা লিখেছি তা এখানে:

এটি একটি মাইডিবাগনেমস্পেসের অংশ, ডিবাগ স্পষ্টতই সংরক্ষিত এবং নেমস্পেসের নাম হিসাবে এটি করবে না।

    var DEBUG = true;

...

    if (true == DEBUG && !test)
    {
        var sAlert = "Assertion failed! ";
        if (null != message)
            sAlert += "\n" + message;
        if (null != err)
            sAlert += "\n" + "File: " + err.fileName + "\n" + "Line: " + err.lineNumber;
        alert(sAlert);
    }

...

কিভাবে কল করবেন:

    MyDebugNamespace.Assert(new Error(""), (null != someVar), "Something is wrong!")

Nameচ্ছিকভাবে বার্তাগুলি বাদ দিতে বা কলগুলিতে ত্রুটিটি বাড়াতে আমি আমার নামস্থানে এই বেস কোডটি কল করে চলক সংখ্যক যুক্তিযুক্ত দুটি ফাংশন অন্তর্ভুক্ত করেছি।

এটি ফায়ারফক্স, আই 6 এবং ক্রোম ফাইল-নেম এবং লাইন নাম্বারকে অনির্ধারিত হিসাবে প্রতিবেদন করে fine


2

নিম্নলিখিত কোডটি মজিলা এবং Chrome এ আমার জন্য কাজ করে।

এটির লগ ফাংশন যা ফাইলটির নাম এবং কলারের লাইনটি দেখায়।

log: function (arg) {
    var toPrint = [];
    for (var i = 0; i < arguments.length; ++i) {
        toPrint.push(arguments[i]);
    }

    function getErrorObject(){
        try { throw Error('') } catch(err) { return err; }
    }

    var err = getErrorObject(),
        caller;

    if ($.browser.mozilla) {
        caller = err.stack.split("\n")[2];
    } else {
        caller = err.stack.split("\n")[4];
    }

    var index = caller.indexOf('.js');

    var str = caller.substr(0, index + 3);
    index = str.lastIndexOf('/');
    str = str.substr(index + 1, str.length);

    var info = "\t\tFile: " + str;

    if ($.browser.mozilla) {
        str = caller;
    } else {
        index = caller.lastIndexOf(':');
        str = caller.substr(0, index);
    }
    index = str.lastIndexOf(':');
    str = str.substr(index + 1, str.length);
    info += " Line: " + str;
    toPrint.push(info);

    console.log.apply(console, toPrint);
}

দেখে মনে হচ্ছে কিছু অনুপস্থিত। আমি পেয়েছি:SyntaxError: function statement requires a name,log: function (arg) {
স্পাইডারপ্ল্যান্ট 0

আমি এই ধারণাটি পছন্দ করি তবে আমার জন্য লাইন নম্বরগুলি ভুল থেকে আসে।
রায়ান

2

জাভাস্ক্রিপ্টে কাস্টম ত্রুটিগুলিতে আমার অবদান:

  1. প্রথমত, আমি ত্রুটিযুক্ত বস্তু থেকে ইনহেরিটিংয়ের এই @ বিটি লোকের সাথে একমত - বার্তাটির সম্পত্তি কোথায়? , আমাদের এটি সঠিকভাবে তৈরি করতে হবে (আসলে আপনাকে আমার পছন্দসই একটি জেএস অবজেক্ট লাইব্রেরি ব্যবহার করতে হবে: https://github.com/jiem/my-class ):

    window.g3 = window.g3 || {};
    g3.Error = function (message, name, original) {
         this.original = original;
         this.name = name || 'Error.g3';
         this.message = message || 'A g3.Error was thrown!';
         (original)? this.stack = this.original.stack: this.stack = null;
         this.message += '<br>---STACK---<br>' + this.stack;
     };
    
     var ClassEmpty = function() {};
     ClassEmpty.prototype = Error.prototype;
     g3.Error.prototype = new ClassEmpty();
     g3.Error.prototype.constructor = g3.Error;
  2. তারপরে, আমাদের একটি গ্লোবাল ত্রুটি হ্যান্ডলিং ফাংশন (alচ্ছিক) বা এগুলি ইঞ্জিনটি শেষ করতে হবে:

    window.onerror = printError; 
    function printError(msg, url, line){
        document.getElementById('test').innerHTML = msg+'<br>at: '+url+'<br>line: '+line;
        return true;
    }
  3. পরিশেষে, আমাদের কাস্টম ত্রুটিগুলি সাবধানতার সাথে নিক্ষেপ করা উচিত:

    //hit it!
    //throw new g3.Error('Hey, this is an error message!', 'Error.Factory.g3');
    throw new g3.Error('Hey, this is an error message!', 'Error.Factory.g3', new Error());

কেবলমাত্র তৃতীয় প্যারামিটার হিসাবে পাস করার সময় new Error() আমরা ফাংশন এবং লাইন সংখ্যাগুলির সাথে স্ট্যাকটি দেখতে পাচ্ছি!

2 এ, ফাংশনটি ইঞ্জিন দ্বারা নিক্ষেপ করা ত্রুটিও পরিচালনা করতে পারে।

অবশ্যই, আসল প্রশ্নটি আমাদের যদি সত্যই প্রয়োজন হয় এবং কখন; এমন কেস রয়েছে (আমার মতে 99%) যেখানে মনোমুগ্ধকর প্রত্যাবর্তন falseযথেষ্ট এবং একটি ত্রুটি ছোঁড়ার সাহায্যে কেবল কিছু সমালোচনামূলক পয়েন্টগুলি প্রদর্শন করা যায়।

উদাহরণ: http://jsfiddle.net/centurianii/m2sQ3/1/


2
console.log(new Error);

এটি আপনাকে পুরো ট্র্যাকটি প্রদর্শন করবে।


1

কোন লাইনে কিছু রয়েছে তা নির্ধারণ করতে আপনাকে সেই কোডের জন্য সমস্ত কোড সন্ধান করতে হবে যা নির্দিষ্ট আগ্রহের রেখাটি দখল করে এবং উপরের থেকে এই আগ্রহের "\ n" অক্ষরগুলি গণনা করতে হবে এবং 1 যুক্ত করতে হবে।

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

http://mailmarkup.org/htmlint/htmlint.html


আগ্রহের নির্দিষ্ট লাইনটি অনেকগুলি হতে পারে ... অন্য পদ্ধতি থেকে যদি আমার একই পদ্ধতিটি বেশ কয়েকবার কল করা থাকে তবে আমি কীভাবে জানতে পারি (সেই অন্যান্য পদ্ধতিতে) কলটি কোথা থেকে এসেছে?
তালুক

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

-2

উত্তরগুলি সহজ। না এবং না (না)।

সময়ের মধ্যে জাভাস্ক্রিপ্ট সোর্স ফাইল / ইউআরএলগুলির ধারণাটি চালাচ্ছে যা থেকে আসা চলে গেছে।

একটি লাইন সংখ্যা নির্ধারণেরও কোনও উপায় নেই কারণ কার্যকর করার সময় আবার কোড "লাইনের" ধারণা জাভাস্ক্রিপ্টে আর অর্থবহ হয় না।

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


ফায়ার ফক্সে ব্যতিক্রমগুলি এ জাতীয় তথ্য অন্তর্ভুক্ত করে ... এটি কি কমপক্ষে ফায়ার ফক্সে সম্ভব হবে?
জোয়েডবার্গ

আপনি যখন এমএস স্ক্রিপ্ট ডিবাগারটি চালু করেন এবং কিছু ব্রেকপয়েন্ট রাখেন, আপনি কল স্ট্যাক দেখতে পাবেন যেখানে আপনি ঠিক এসেছেন। এটি বিশেষায়িত হুকের কারণে?
তালুত

"মৃত্যুদন্ড কার্যকর করার পরে আবার কোড" লাইনের "ধারণা জাভাস্ক্রিপ্টে আর অর্থবহ হয় না।" তাই না? জাতীয় ইতিমধ্যে দেখায় লাইন সংখ্যা সব আপনি console.log () চালানো
mikemaccana

পছন্দ করুন এটি ঝরঝরে কিছুটা নিখুঁত 'না এবং না (না)' এর বিরোধিতা করে।
মাইকমেকানা

@ নায়েলার: ২০০৯ সালে সমস্ত বড় ব্রাউজার জুড়ে, কীভাবে আমার উত্তরটির বিরোধিতা করছে। মনে রাখবেন হাতে থাকা প্রশ্নটি আবিষ্কারের, জাভাস্ক্রিপ্ট চলমানটিতে, কলির লাইন নম্বরটি সম্পর্কে?
অ্যান্থনিডাব্লু জোন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.