chrome.debugger

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, , Giriş, İnceleyici, Günlük, , 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.

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

Chrome 125 ve sonraki sürümler 'nı inceleyin.

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

Chrome 44 ve sonraki sürümler 'nı inceleyin.

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ığı.

  • Hedef türü.

  • url

    dize

    Hedef URL.

TargetInfoType

Chrome 44 ve sonraki sürümler 'nı inceleyin.

Hedef türü.

Enum

"page"

"background_page"

"çalışan"

"diğer"

Yöntemler

attach()

Söz 'nı inceleyin.
chrome.debugger.attach(
  target: Debuggee,
  requiredVersion: string,
  callback?: function,
)

Hata ayıklayıcıyı belirtilen hedefe ekler.

Parametreler

  • 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()

Söz 'nı inceleyin.
chrome.debugger.detach(
  target: Debuggee,
  callback?: function,
)

Hata ayıklayıcıyı belirtilen hedeften ayırır.

Parametreler

  • Çı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()

Söz 'nı inceleyin.
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&lt;TargetInfo[]&gt;

    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()

Söz 'nı inceleyin.
chrome.debugger.sendCommand(
  target: DebuggerSession,
  method: string,
  commandParams?: object,
  callback?: function,
)

Verilen komutu hata ayıklama hedefine gönderir.

Parametreler

  • 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&lt;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

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