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
डीबगर सेशन आइडेंटिफ़ायर. 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
कनेक्शन खत्म होने की वजह.
Enum
"target_closed"
"canceled_by_user"
TargetInfo
डीबग टारगेट की जानकारी
प्रॉपर्टी
-
अटैच किया गया
बूलियन
अगर डीबगर पहले से अटैच है, तो वैल्यू true होगी.
-
extensionId
string ज़रूरी नहीं
एक्सटेंशन आईडी, अगर type = 'background_page' के तौर पर तय किया गया है.
-
faviconUrl
string ज़रूरी नहीं
टारगेट फ़ेविकॉन यूआरएल.
-
आईडी
स्ट्रिंग
टारगेट आईडी.
-
tabId
number ज़रूरी नहीं
टैब आईडी, अगर टाइप == 'पेज' के तौर पर तय किया गया है.
-
title
स्ट्रिंग
टारगेट पेज का टाइटल.
-
टाइप
टारगेट टाइप.
-
url
स्ट्रिंग
टारगेट यूआरएल.
TargetInfoType
टारगेट टाइप.
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 को शुरू किया जा रहा हो.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(source: Debuggee, reason: DetachReason) => void
-
सोर्स
-
reason
-
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब डीबग करने वाला टारगेट, इंस्ट्रुमेंटेशन इवेंट जारी करता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(source: DebuggerSession, method: string, params?: object) => void
-
सोर्स
-
तरीका
स्ट्रिंग
-
पैरामीटर
object ज़रूरी नहीं
-