Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hata ayıklayıcı altyapısındaki iş parçacıklarına ve işlemlere genel bakış için bkz. İş Parçacıkları ve İşlemler.
Bir olay oluştuğunda, olay iş parçacığı ve olay işlemi, olayın gerçekleştiği iş parçacığı ve işleme (işletim sistemi veya sanal) ayarlanır. Bunlar sırasıyla GetEventThread ve GetEventProcess kullanılarak bulunabilir.
Gizli İş Parçacıkları ve İşlemler
Çekirdek modunda hata ayıklamada, hata ayıklayıcı altyapısı sanaldan fiziksel adrese çeviri gerçekleştirirken hangi sanal adres alanının kullanılacağını belirlemek için örtük işlemi kullanır ( örneğin, VirtualToPhysical ve ReadVirtual yöntemlerinde). Bir olay oluştuğunda örtük işlem geçerli işleme ayarlanır.
Örtük işlem SetImplicitProcessDataOffset kullanılarak değiştirilebilir. Örtük işlemi belirlemek için GetImplicitProcessDataOffset komutunu kullanın.
Not Canlı çekirdek hata ayıklama oturumu sırasında kesme noktaları ayarlanırken hata ayıklayıcı altyapısı kesme noktasının sanal adresini hedefe geçirir ve hedef kesme noktasını ayarlar. Bu durumda kesme noktası işlenirken yalnızca hedefin işlem bağlamı kullanılır; örtük işlemin değeri ilgisizdir.
Çekirdek modunda hata ayıklamada, hata ayıklayıcı, hedefin kayıtlarından bazılarını tespit etmek için örtük iş parçacığını kullanır. Buna işlemci yığını (bkz . GetStackOffset), çerçeve uzaklığı (bkz . GetFrameOffset) ve yönerge uzaklığı dahildir (bkz. GetInstructionOffset). Bir olay meydana geldiğinde varsayılan iş parçacığı geçerli iş parçacığı olarak ayarlanır.
Görünmeyen iş parçacığı SetImplicitThreadDataOffset kullanılarak değiştirilebilir. Örtük iş parçacığını belirlemek amacıyla GetImplicitThreadDataOffset işlevini kullanın.
Tüm yazmaçlar örtük iş parçacığı tarafından belirlenmez. Örtük iş parçacığı değiştirildiğinde bazı yazmaçlar aynı kalır.
Uyarı Örtük işlem ve örtük işlemci bağımsızdır. Örtük iş parçacığı örtük işleme ait değilse, örtük iş parçacığının kullanıcı ve oturum durumu yanlış sanal adres alanında olur ve bu bilgilere erişme girişimleri hatalara neden olur veya yanlış sonuçlar sağlar. Çekirdek bellek adresleri tüm sanal adres alanlarında sabit olduğundan, çekirdek belleğine erişilirken bu sorun oluşmaz. Bu nedenle, çekirdek belleğinde bulunan örtük iş parçacığının bilgilerine örtük işlemden bağımsız olarak erişilebilir.
Iş parçacığı
Altyapı iş parçacığı kimliği, bir hedef için her işletim sistemi iş parçacığını ve her sanal iş parçacığını tanımlamak üzere hata ayıklayıcı altyapısı tarafından kullanılır.
Bir hedef durdurulurken, her iş parçacığının ait olduğu işleme göre bir dizini de vardır. Herhangi bir işlem için, işlemdeki ilk iş parçacığının dizini sıfırdır ve son iş parçacığının dizini işlemdeki iş parçacığı sayısı eksi bir olur. Geçerli işlemdeki iş parçacığı sayısı GetNumberThreads kullanılarak bulunabilir. Geçerli hedefteki tüm işlemlerdeki toplam iş parçacığı sayısı GetTotalNumberThreads kullanılarak bulunabilir.
Geçerli işlemdeki bir veya daha fazla iş parçacığı için altyapı iş parçacığı kimliği ve sistem iş parçacığı kimliği , GetThreadIdsByIndex kullanılarak dizinlerinden bulunabilir.
Motor, her iş parçacığı hakkında birkaç bilgi tutar. Bu bilgiler geçerli iş parçacığı için sorgulanabilir ve bir iş parçacığının altyapı iş parçacığı kimliğini bulmak için kullanılabilir.
sistem iş parçacığı kimliği (yalnızca kullanıcı modunda hata ayıklama)
Geçerli iş parçacığının sistem iş parçacığı kimliği GetCurrentThreadSystemId kullanılarak bulunabilir. Belirli bir sistem iş parçacığı kimliği için ilgili altyapı iş parçacığı kimliği GetThreadIdBySystemId kullanılarak bulunabilir.
iş parçacığı ortam bloğu (TEB)
Mevcut iş parçacığının TEB adresi GetCurrentThreadTeb kullanılarak bulunabilir. Belirli bir TEB adresi için ilgili altyapı iş parçacığı kimliği GetThreadIdByTeb kullanılarak bulunabilir. Çekirdek modunda hata ayıklamada, bir (sanal) iş parçacığının TEB'i, son olay gerçekleştiğinde ilgili işlemcide çalışan sistem iş parçacığının TEB'idir.
veri uzaklığı
Kullanıcı modunda hata ayıklamada, bir (sistem) iş parçacığının veri uzaklığı, bu iş parçacığı için TEB'nin konumudur. Çekirdek modunda hata ayıklamada bir (sanal) iş parçacığının veri uzaklığı, son olay gerçekleştiğinde ilgili işlemcide çalışan sistem iş parçacığının KTHREAD yapısıdır. Geçerli iş parçacığının veri uzaklığı GetCurrentThreadDataOffset kullanılarak bulunabilir. Belirli bir veri uzaklığı için ilgili altyapı iş parçacığı kimliği GetThreadIdByDataOffset kullanılarak bulunabilir.
sistem tutamacı
Geçerli iş parçacığının sistem tutamacı GetCurrentThreadHandle kullanılarak bulunabilir. Belirli bir sistem tanıtıcısı için ilgili motor iş parçacığı kimliği, GetThreadIdByHandle kullanılarak bulunabilir. Çekirdek modunda hata ayıklamada, her (sanal) işlem için yapay bir tanıtıcı oluşturulur. Bu tanıtıcı yalnızca hata ayıklayıcı altyapısı API sorguları ile kullanılabilir.
Süreç
Altyapı işlem kimliği, hata ayıklayıcı altyapısı tarafından bir hedef için her işletim sistemi işlemini ve her sanal işlemi tanımlamak için kullanılır.
Hedef durdurulduğunda, her işlemin hedefe bağlı bir dizini vardır. Hedefteki ilk işlemin dizini sıfır, son işlemin dizini ise hedefteki işlem sayısı eksi birdir. Geçerli hedefteki işlemlerin sayısı GetNumberProcesses kullanılarak bulunabilir.
Geçerli hedefteki bir veya daha fazla iş parçacığı için motor işlem kimliği ve sistem işlem kimliği, dizinlerinden GetProcessIdsByIndex kullanılarak bulunabilir.
Motor, her işlem hakkında birkaç bilgi parçası tutar. Bu bilgiler geçerli işlem için sorgulanabilir ve bir işlemin altyapı işlem kimliğini bulmak için kullanılabilir.
sistem işlem kimliği (yalnızca kullanıcı modu hata ayıklama)
Geçerli işlemin sistem işlem kimliği GetCurrentProcessSystemId kullanılarak bulunabilir. Belirli bir sistem işlem kimliği için ilgili altyapı işlem kimliği GetProcessIdBySystemId kullanılarak bulunabilir.
işlem ortamı bloğu (PEB)
Geçerli işlemin PEB adresi GetCurrentProcessPeb kullanılarak bulunabilir. Belirli bir PEB adresi için ilgili altyapı işlemi kimliği GetProcessIdByPeb kullanılarak bulunabilir. Çekirdek modunda hata ayıklamada, (sanal) işlemin PEB'i, son olay gerçekleştiğinde çalışan sistem işleminin PEB'sıdır.
veri uzaklığı
Kullanıcı modunda hata ayıklamada, bir (sistem) işleminin veri uzaklığı, bu işlemin PEB'sinin konumudur. Çekirdek modunda hata ayıklamada, (sanal) işlemin veri uzaklığı, son olay oluştuğunda çalışan sistem işleminin KPROCESS yapısıdır. Geçerli işlemin veri uzaklığı GetCurrentProcessDataOffset kullanılarak bulunabilir. Belirli bir veri uzaklığı için ilgili altyapı işlemi kimliği GetProcessIdByDataOffset kullanılarak bulunabilir.
sistem tutamacı
Geçerli işlemin sistem tanıtıcısı GetCurrentProcessHandle kullanılarak bulunabilir. Belirli bir sistem tanıtıcısı için ilgili altyapı işlem kimliği GetProcessIdByHandle kullanılarak bulunabilir. Çekirdek modunda hata ayıklama yapılırken, (sanal) işlem için yapay bir tanıtıcı oluşturulur. Bu tanıtıcı yalnızca hata ayıklayıcı altyapısı sorgularıyla kullanılabilir.
Etkinlikler
Canlı kullanıcı modunda hata ayıklamada, bir iş parçacığı hedefte oluşturulduğunda veya çıktığında, iş parçacığı oluşturma ve iş parçacığından çıkma hata ayıklama olayları oluşturulur. Bu olaylar IDebugEventCallbacks::CreateThread ve IDebugEventCallbacks::ExitThread geri çağırma yöntemlerine yapılan çağrılarla sonuçlanır.
Canlı kullanıcı modunda hata ayıklamada, hedefte bir işlem oluşturulduğunda veya sonlandığında, işlem oluşturma ve işlem sonlandırma hata ayıklama olayları üretilir. Bu olaylar IDebugEventCallbacks::CreateProcess ve IDebugEventCallbacks::ExitProcess geri çağırma yöntemlerine yapılan çağrılarla sonuçlanır.
Olaylar hakkında daha fazla bilgi için bkz. Olayları İzleme.
Ek Bilgiler
TEB, KTHREAD, PEB ve KPROCESS yapıları da dahil olmak üzere iş parçacıkları ve işlemler hakkında daha fazla bilgi için bkz. David Solomon ve Mark Russinovich'in Microsoft Windows internals .