chrome.debugger

refresh date: 2026-09-25 robots: noindex

ब्यौरा

chrome.debugger एपीआई, Chrome के रिमोट डीबगिंग प्रोटोकॉल के लिए, वैकल्पिक ट्रांसपोर्ट के तौर पर काम करता है. नेटवर्क इंटरैक्शन को इंस्ट्रुमेंट करने, JavaScript को डीबग करने, डीओएम और सीएसएस में बदलाव करने वगैरह के लिए, एक या उससे ज़्यादा टैब से अटैच करने के लिए chrome.debugger का इस्तेमाल करें. Debuggee प्रॉपर्टी tabId का इस्तेमाल करके, sendCommand वाले टैब को टारगेट करें. साथ ही, onEvent कॉलबैक से tabId के हिसाब से इवेंट रूट करें.

अनुमतियां

debugger

सुरक्षा से जुड़ा नोट

सुरक्षा की वजहों से, chrome.debugger एपीआई सभी Chrome DevTools प्रोटोकॉल डोमेन का ऐक्सेस नहीं देता. उपलब्ध डोमेन ये हैं: सुलभता, ऑडिट, CacheStorage, कंसोल, सीएसएस, डेटाबेस, डीबगर, DOM, DOMDebugger, DOMSnapshot, एम्युलेशन, फ़ेच, IO, इनपुट, इंस्पेक्टर, लॉग, नेटवर्क, ओवरले, पेज, परफ़ॉर्मेंस, रनटाइम, स्टोरेज, टारगेट, ट्रेसिंग, WebAudio, और WebAuthn.

मेनिफ़ेस्ट

इस एपीआई का इस्तेमाल करने के लिए, आपको अपने एक्सटेंशन के मेनिफ़ेस्ट में "debugger" अनुमति का एलान करना होगा.

{
  "name": "My extension",
  ...
  "permissions": [
    "debugger",
  ],
  ...
}

उदाहरण

इस एपीआई को आज़माने के लिए, chrome-extension-samples रिपॉज़िटरी से डीबगर एपीआई का उदाहरण इंस्टॉल करें.

टाइप

Debuggee

डीबगी आइडेंटिफ़ायर. tabId, extensionId या targetId में से किसी एक की जानकारी देना ज़रूरी है

प्रॉपर्टी

  • extensionId

    string ज़रूरी नहीं

    उस एक्सटेंशन का आईडी जिसे आपको डीबग करना है. एक्सटेंशन के बैकग्राउंड पेज से अटैच करना सिर्फ़ तब संभव है, जब --silent-debugger-extension-api कमांड-लाइन स्विच का इस्तेमाल किया गया हो.

  • tabId

    number ज़रूरी नहीं

    उस टैब का आईडी जिसे आपको डीबग करना है.

  • targetId

    string ज़रूरी नहीं

    डीबग टारगेट का ओपेक आईडी.

DebuggerSession

Chrome 125 या इसके बाद का वर्शन

डीबगर सेशन आइडेंटिफ़ायर. tabId, extensionId या targetId में से किसी एक की वैल्यू देना ज़रूरी है. इसके अलावा, sessionId भी दिया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है. अगर onEvent से भेजे गए आर्ग्युमेंट के लिए sessionId तय किया गया है, तो इसका मतलब है कि इवेंट, रूट डीबगी सेशन के अंदर चाइल्ड प्रोटोकॉल सेशन से आ रहा है. अगर sendCommand को पास करते समय sessionId की जानकारी दी जाती है, तो यह रूट डीबगी सेशन में चाइल्ड प्रोटोकॉल सेशन को टारगेट करता है.

प्रॉपर्टी

  • extensionId

    string ज़रूरी नहीं

    उस एक्सटेंशन का आईडी जिसे आपको डीबग करना है. एक्सटेंशन के बैकग्राउंड पेज से अटैच करना सिर्फ़ तब संभव है, जब --silent-debugger-extension-api कमांड-लाइन स्विच का इस्तेमाल किया गया हो.

  • sessionId

    string ज़रूरी नहीं

    Chrome DevTools Protocol सेशन का ओपेक आईडी. यह tabId, extensionId या targetId से पहचाने गए रूट सेशन में चाइल्ड सेशन की पहचान करता है.

  • tabId

    number ज़रूरी नहीं

    उस टैब का आईडी जिसे आपको डीबग करना है.

  • targetId

    string ज़रूरी नहीं

    डीबग टारगेट का ओपेक आईडी.

DetachReason

Chrome 44 या इसके बाद का वर्शन

कनेक्शन खत्म होने की वजह.

Enum

"target_closed"

"canceled_by_user"

TargetInfo

डीबग टारगेट की जानकारी

प्रॉपर्टी

  • अटैच किया गया

    बूलियन

    अगर डीबगर पहले से अटैच है, तो वैल्यू true होगी.

  • extensionId

    string ज़रूरी नहीं

    एक्सटेंशन आईडी, अगर type = 'background_page' के तौर पर तय किया गया है.

  • faviconUrl

    string ज़रूरी नहीं

    टारगेट फ़ेविकॉन यूआरएल.

  • आईडी

    स्ट्रिंग

    टारगेट आईडी.

  • tabId

    number ज़रूरी नहीं

    टैब आईडी, अगर टाइप == 'पेज' के तौर पर तय किया गया है.

  • title

    स्ट्रिंग

    टारगेट पेज का टाइटल.

  • टाइप

    टारगेट टाइप.

  • url

    स्ट्रिंग

    टारगेट यूआरएल.

TargetInfoType

Chrome 44 या इसके बाद का वर्शन

टारगेट टाइप.

Enum

"page"

"background_page"

"worker"

"other"

तरीके

attach()

वादा
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)
: Promise<void>

दिए गए टारगेट में डीबगर अटैच करता है.

पैरामीटर

  • टारगेट

    डीबग करने का वह टारगेट जिससे आपको अटैच करना है.

  • requiredVersion

    स्ट्रिंग

    डीबग करने के लिए ज़रूरी प्रोटोकॉल वर्शन ("0.1"). डीबग किए जा रहे प्रोग्राम को सिर्फ़ ऐसे डीबगर से अटैच किया जा सकता है जिसका मेजर वर्शन, डीबग किए जा रहे प्रोग्राम के मेजर वर्शन से मैच करता हो. साथ ही, डीबगर का माइनर वर्शन, डीबग किए जा रहे प्रोग्राम के माइनर वर्शन से ज़्यादा या उसके बराबर हो. प्रोटोकॉल के वर्शन की सूची यहां देखी जा सकती है.

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • वादा<शून्य>

    Chrome 96+

    अटैच करने की कार्रवाई पूरी होने या न होने पर, यह समस्या हल हो जाती है. प्रॉमिस बिना किसी वैल्यू के रिज़ॉल्व हो जाता है. अगर अटैच नहीं हो पाता है, तो प्रॉमिस को अस्वीकार कर दिया जाएगा.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

detach()

वादा
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)
: Promise<void>

दिए गए टारगेट से डीबगर को अलग करता है.

पैरामीटर

  • टारगेट

    डीबग करने का वह टारगेट जिससे आपको अलग होना है.

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • वादा<शून्य>

    Chrome 96+

    अलग करने की कार्रवाई पूरी होने या न होने पर, यह प्रॉमिस रिज़ॉल्व हो जाता है. प्रॉमिस बिना किसी वैल्यू के रिज़ॉल्व हो जाता है. अगर डिटैच नहीं हो पाता है, तो प्रॉमिस को अस्वीकार कर दिया जाएगा.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

getTargets()

वादा
chrome.debugger.getTargets(
  callback?: function,
)
: Promise<TargetInfo[]>

इससे, उपलब्ध डीबग टारगेट की सूची दिखती है.

पैरामीटर

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    (result: TargetInfo[]) => void

    • नतीजा

      उपलब्ध डीबग टारगेट के हिसाब से, TargetInfo ऑब्जेक्ट का कलेक्शन.

रिटर्न

  • Promise<TargetInfo[]>

    Chrome 96+

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

sendCommand()

वादा
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)
: Promise<object | undefined>

डीबग किए जा रहे टारगेट को दिया गया निर्देश भेजता है.

पैरामीटर

  • टारगेट

    डीबग करने का टारगेट, जिस पर आपको निर्देश भेजना है.

  • तरीका

    स्ट्रिंग

    तरीके का नाम. यह रिमोट डीबगिंग प्रोटोकॉल से तय किए गए तरीकों में से एक होना चाहिए.

  • commandParams

    object ज़रूरी नहीं

    अनुरोध के पैरामीटर वाला JSON ऑब्जेक्ट. यह ऑब्जेक्ट, दिए गए तरीके के लिए रिमोट डीबगिंग पैरामीटर स्कीम के मुताबिक होना चाहिए.

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    (result?: object) => void

    • नतीजा

      object ज़रूरी नहीं

      रिस्पॉन्स वाला JSON ऑब्जेक्ट. जवाब का स्ट्रक्चर, तरीके के नाम के हिसाब से अलग-अलग होता है. साथ ही, इसे रिमोट डीबगिंग प्रोटोकॉल में कमांड के ब्यौरे के 'रिटर्न' एट्रिब्यूट से तय किया जाता है.

रिटर्न

  • Promise<object | undefined>

    Chrome 96+

    जवाब का मुख्य हिस्सा. अगर मैसेज पोस्ट करते समय कोई गड़बड़ी होती है, तो प्रॉमिस को अस्वीकार कर दिया जाएगा.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

इवेंट

onDetach

chrome.debugger.onDetach.addListener(
  callback: function,
)

यह तब ट्रिगर होता है, जब ब्राउज़र टैब के लिए डीबग करने का सेशन खत्म करता है. ऐसा तब होता है, जब टैब बंद किया जा रहा हो या अटैच किए गए टैब के लिए Chrome DevTools को शुरू किया जा रहा हो.

पैरामीटर

onEvent

chrome.debugger.onEvent.addListener(
  callback: function,
)

यह तब ट्रिगर होता है, जब डीबग करने वाला टारगेट, इंस्ट्रुमेंटेशन इवेंट जारी करता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर कुछ ऐसा दिखता है:

    (source: DebuggerSession, method: string, params?: object) => void

    • सोर्स
    • तरीका

      स्ट्रिंग

    • पैरामीटर

      object ज़रूरी नहीं