Açıklama
chrome.debugger
API'si, Chrome'un uzaktan hata ayıklama protokolü için alternatif bir aktarım görevi görür. Ağ etkileşimi aracı üzerinden bir veya daha fazla sekme eklemek, JavaScript'te hata ayıklamak, DOM ve CSS'yi değiştirmek ve daha pek çok işlem için chrome.debugger
kullanın. sendCommand
içeren sekmeleri hedeflemek ve etkinlikleri onEvent
geri çağırmalarından tabId
tarihine göre yönlendirmek için Debuggee
özelliğini tabId
kullanın.
İzinler
debugger
Bu API'yi kullanmak için uzantınızın manifest dosyasında "debugger"
iznini beyan etmeniz gerekir.
{
"name": "My extension",
...
"permissions": [
"debugger",
],
...
}
Kavramlar ve kullanım
chrome.debugger
API eklendikten sonra Chrome Geliştirici Araçları Protokolü
(CDP) komutlarını belirli bir hedefe ayarlar. CDP'yi derinlemesine açıklamak kapsam dışındadır
inceleyebilirsiniz. CDP hakkında daha fazla bilgi edinmek için
resmi CDP belgelerini inceleyin.
Hedefler
Hedefler, hata ayıklaması yapılan öğeleri temsil eder. Örneğin, bir sekme,
olabilir. Her hedef, UUID ile tanımlanır ve UUID ile
tür (iframe
, shared_worker
ve diğerleri gibi).
Bir hedef içinde birden çok yürütme bağlamı olabilir. Örneğin, aynı işlem iframe'leri benzersiz bir hedef almaz, bunun yerine tek bir hedeften erişilebilen farklı bağlamlar oluşturabilirsiniz.
Kısıtlanmış alanlar
chrome.debugger
API, güvenlik nedeniyle tüm Chrome Geliştirici Araçları'na erişim sağlamaz
Protokol Alanları. Kullanılabilir alanlar şunlardır: Erişilebilirlik,
Denetimler, CacheStorage, Konsol,
CSS, Veritabanı, Hata Ayıklayıcı, DOM,
DOMDebugger, DOMSnapshot,
Emülasyon, Getirme, Gİ, Giriş,
İnceleyici, Günlük, Ağ, Yer Paylaşımı,
Sayfa, Performans, Profiler,
Çalışma zamanı, Depolama, Hedef, İzleme,
WebAudio ve WebAuthn.
Çerçevelerle çalışma
Karelerin hedefler ile bire bir eşlemesi yok. Tek bir sekmede, aynı işlem çerçevesi aynı hedefi paylaşabilir ancak farklı bir yürütme bağlamı hakkında daha fazla bilgi edinin. Diğer yandan, yeni bir hedef bir iframe için oluşturulan bir çerçevedir.
Tüm karelere eklemek için her kare türünü ayrı ayrı ele almanız gerekir:
Yenileri belirlemek için
Runtime.executionContextCreated
etkinliğini dinleyin aynı süreç çerçeveleriyle ilişkili yürütme bağlamı sunar.Aşağıdaki adımları uygulayarak ilgili hedeflere ekleme çerçeveleri belirleyebilirsiniz.
İlgili hedeflere ekle
Bir hedefe bağlandıktan sonra, diğer ilgili hedeflere bağlanmak isteyebilirsiniz buna dahildir.
chrome.debugger
API, Chrome 125 sürümünden itibaren düz oturumları desteklemektedir. Bu
ana hata ayıklayıcı oturumunuza alt öğe olarak ek hedefler eklemenize ve
chrome.debugger.attach
numaralı telefonu tekrar aramaya gerek kalmadan mesaj gönderebilirsiniz. Bunun yerine
şunu çağırırken bir sessionId
özelliği ekleyebilirsiniz: chrome.debugger.sendCommand
komut göndermek istediğiniz alt hedefi tanımlayın.
İşlem dışı alt çerçevelere otomatik olarak eklemek için önce
Target.attachedToTarget
etkinliği:
chrome.debugger.onEvent.addListener((source, method, params) => {
if (method === "Target.attachedToTarget") {
// `source` identifies the parent session, but we need to construct a new
// identifier for the child session
const session = { ...source, sessionId: params.sessionId };
// Call any needed CDP commands for the child session
await chrome.debugger.sendCommand(session, "Runtime.enable");
}
});
Ardından, otomatik ekleme özelliğini etkinleştirmek için Target.setAutoAttach
komutunu
flatten
seçeneği true
olarak ayarlandı:
await chrome.debugger.sendCommand({ tabId }, "Target.setAutoAttach", {
autoAttach: true,
waitForDebuggerOnStart: false,
flatten: true,
filter: [{ type: "iframe", exclude: false }]
});
Örnekler
Bu API'yi denemek için chrome-extension-samples bölümünden hata ayıklayıcı API örneğini yükleyin. depodur.
Türler
Debuggee
Hata ayıklama uygulaması tanımlayıcısı. tabId, uzantı kimliği veya targetId belirtilmelidir
Özellikler
-
extensionId
dize isteğe bağlı
Hata ayıklamak istediğiniz uzantının kimliği. Bir uzantının arka plan sayfasına yalnızca
--silent-debugger-extension-api
komut satırı anahtarı kullanıldığında eklenebilir. -
tabId
sayı isteğe bağlı
Hata ayıklamak istediğiniz sekmenin kimliği.
-
targetId
dize isteğe bağlı
Hata ayıklama hedefinin opak kimliği.
DebuggerSession
Hata ayıklayıcı oturum tanımlayıcısı. tabId, uzantı kimliği veya targetId özelliklerinden biri belirtilmelidir. Ayrıca isteğe bağlı bir sessionId değeri de sağlanabilir. onEvent
kaynağından gönderilen bağımsız değişkenler için sessionId değerinin belirtilmesi, etkinliğin kök hatası ayıklama oturumundaki bir alt protokol oturumundan geldiği anlamına gelir. sendCommand
hizmetine iletildiğinde sessionId belirtilirse kök hata ayıklama oturumundaki bir alt protokol oturumunu hedefler.
Özellikler
-
extensionId
dize isteğe bağlı
Hata ayıklamak istediğiniz uzantının kimliği. Bir uzantının arka plan sayfasına yalnızca
--silent-debugger-extension-api
komut satırı anahtarı kullanıldığında eklenebilir. -
sessionId
dize isteğe bağlı
Chrome Geliştirici Araçları Protokolü oturumunun opak kimliği. tabId, extensionsId veya targetId ile tanımlanan kök oturumdaki bir alt oturumu tanımlar.
-
tabId
sayı isteğe bağlı
Hata ayıklamak istediğiniz sekmenin kimliği.
-
targetId
dize isteğe bağlı
Hata ayıklama hedefinin opak kimliği.
DetachReason
Bağlantı sonlandırma nedeni.
Enum
"target_closed"
"canceled_by_user"
TargetInfo
Hata ayıklama hedefi bilgileri
Özellikler
-
ekli
boolean
Hata ayıklayıcı zaten eklenmişse doğru değerini döndürür.
-
extensionId
dize isteğe bağlı
'background_page' türündeyse tanımlanan uzantı kimliği.
-
faviconUrl
dize isteğe bağlı
Hedef site simgesi URL'si.
-
id
dize
Hedef kimliği.
-
tabId
sayı isteğe bağlı
== 'page' türünde olan sekme kimliği.
-
title
dize
Hedef sayfa başlığı.
-
tür
Hedef türü.
-
url
dize
Hedef URL.
TargetInfoType
Hedef türü.
Enum
"page"
"background_page"
"çalışan"
"diğer"
Yöntemler
attach()
chrome.debugger.attach(
target: Debuggee,
requiredVersion: string,
callback?: function,
)
Hata ayıklayıcıyı belirtilen hedefe ekler.
Parametreler
-
hedef
Eklemek istediğiniz hata ayıklama hedefi.
-
requiredVersion
dize
Gerekli hata ayıklama protokolü sürümü ("0.1"). Hata ayıklaması yapılacak işleme yalnızca eşleşen ana sürüm ve daha büyük veya eşit alt sürümlerle eklenebilir. Protokol sürümlerinin listesine buradan ulaşabilirsiniz.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<void>
Chrome 96 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
detach()
chrome.debugger.detach(
target: Debuggee,
callback?: function,
)
Hata ayıklayıcıyı belirtilen hedeften ayırır.
Parametreler
-
hedef
Çıkarmak istediğiniz hata ayıklama hedefi.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<void>
Chrome 96 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
getTargets()
chrome.debugger.getTargets(
callback?: function,
)
Kullanılabilir hata ayıklama hedeflerinin listesini döndürür.
Parametreler
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(result: TargetInfo[]) => void
-
sonuç
Kullanılabilir hata ayıklama hedeflerine karşılık gelen TargetInfo nesneleri dizisi.
-
İadeler
-
Promise<TargetInfo[]>
Chrome 96 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
sendCommand()
chrome.debugger.sendCommand(
target: DebuggerSession,
method: string,
commandParams?: object,
callback?: function,
)
Verilen komutu hata ayıklama hedefine gönderir.
Parametreler
-
hedef
Komutu göndermek istediğiniz hata ayıklama hedefi.
-
method
dize
Yöntem adı. Uzaktan hata ayıklama protokolü tarafından tanımlanan yöntemlerden biri olmalıdır.
-
commandParams
nesne isteğe bağlı
İstek parametrelerine sahip JSON nesnesi. Bu nesne, belirtilen yöntem için uzaktan hata ayıklama parametreleri şemasına uymalıdır.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(result?: object) => void
-
sonuç
nesne isteğe bağlı
Yanıtı içeren JSON nesnesi. Yanıtın yapısı, yöntem adına göre değişir ve "iadeler" ile tanımlanır. özelliğini kullanın.
-
İadeler
-
Promise<object | tanımlanmadı>
Chrome 96 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
Etkinlikler
onDetach
chrome.debugger.onDetach.addListener(
callback: function,
)
Tarayıcı, sekmeyle ilgili hata ayıklama oturumunu sonlandırdığında tetiklenir. Bu durum, sekme kapatıldığında veya ekteki sekme için Chrome Geliştirici Araçları çağrılırken gerçekleşir.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(source: Debuggee, reason: DetachReason) => void
-
source
-
neden
-
onEvent
chrome.debugger.onEvent.addListener(
callback: function,
)
Hedef sorunları enstrümantasyon etkinliği için hata ayıklama işleminde her seferinde tetiklenir.
Parametreler
-
geri çağırma
işlev
callback
parametresi şu şekilde görünür:(source: DebuggerSession, method: string, params?: object) => void
-
source
-
method
dize
-
parametreler
nesne isteğe bağlı
-