@BenVoigt'ın harika bilgilerine ek olarak, bazı eklemeler yapmama izin ver:
Hata ayıklayıcı tarafından hata ayıklanan işlemdeki bir makine kodu değeri (bir yönerge veya bir yönerge) değiştirilerek, kodda, kırılmak istenen (kaynak) satıra karşılık gelen konumda belirli bir tuzak yönergesi ile bir kesme noktası ayarlanır. Bu özel tuzak talimatı bir kesme noktası olarak kullanılmak içindir - hata ayıklayıcı bunu bilir ve işletim sistemi de bilir.
Hata ayıklanan işlem / iş parçacığı tuzak yönergesine çarptığında, @Ben sürecini tetikleyen, daha sonra devam etmekte olan iş parçacığını askıya alan (CPU durumunu belleğe kaydetmeyi de içeren) bir bağlam takasının yarısını içeren, açıklanır. Bu tuzak bir kesme noktası tuzağı olduğundan, işletim sistemi, hata ayıklama işleminin belki de @Ben tarafından açıklanan bir mekanizma kullanılarak askıya alınmasını sağlar ve hata ayıklayıcıyı bildirir ve sonunda sürdürür.
Hata ayıklayıcı, hata ayıklanan askıya alınan işlemin / iş parçacığının kayıtlı durumuna erişmek için sistem çağrılarını kullanır.
Hata ayıklayıcı (şimdi belirli tuzak talimatına sahip olan) kod satırını yürütmek (sürdürmek) için, hata ayıklayıcı, kesme noktası tuzak talimatı ile üzerine yazdığı orijinal makine kodu değerini geri yükleyecektir, muhtemelen başka bir yere başka bir tuzak ayarlayacaktır (örneğin, tek adım, veya kullanıcı yeni kesme noktaları oluşturur) ve işlemi / iş parçacığını çalıştırılabilir olarak işaretleyebilir, belki de @Ben'de açıklandığı gibi bir mekanizma kullanarak.
Gerçek detaylar daha karmaşık olabilir, çünkü uzun süre çalışan bir kırılma noktasını tutmak, gerçek kod için kırılma noktası tuzağını değiştirmek gibi bir şey yapmak anlamına gelir, böylece çizgi çalışabilir ve ardından kesme noktasını tekrar geri takas edebilir ...
Bu kayıtlar diğer işletim sistemleri tarafından sürekli olarak kullanılmıyor mu? nasıl yazılmazlar?
@Ben'in açıkladığı gibi, işlemcilerin zaman dilimleme kullanarak birden çok işlem / iş parçacığı tarafından paylaşılmasına olanak tanıyan zaten var olan iş parçacığı askıya alma / sürdürme özelliğini ( çoklu görevin bağlam değiştirme / değiştirme ) kullanılması.
Canlı verilerin değil, yalnızca içeriğin anlık görüntüsü mü?
İkisi de. Kesme isabet iplik askıya olduğundan, Askıya alma sırasında canlı verilerin anlık (CPU kayıtları, vb ..) ve CPU kayıt değerlerinin yetkili usta iplik be devam gerektiği işlemciye geri . Hata ayıklayıcının kullanıcı arabirimini CPU kayıtlarını (hata ayıklanan işlemin) okumak ve / veya değiştirmek için kullanırsanız, sistem çağrılarını kullanarak bu anlık görüntüyü / master'ı okur ve / veya değiştirir.