Yanıtlar:
Bu sorunun çok zaman geçtiğini biliyorum ama aynı problemi yaşadım ve çözebilirdim.
Bochs, aşağıdaki bayraklarla etkinleştirilebilen görsel bir hata ayıklayıcıya eşlik eder.
./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui
ne zaman oluşturacaksınız ve bu seçeneği Bochs yapılandırma dosyanıza ekleyin:
display_library: x, options = "gui_debug"
GUI hata ayıklayıcısını açıkken, istediğiniz zaman "ara" düğmesine basabilirsiniz ve Görünüm menüsünde, "Fiziksel MemDump" ve "Doğrusal MemDump" seçeneklerine sahipsiniz, sadece başlangıç adresini girin;
İsterseniz, metin modunu da kullanabilirsiniz, yapılandırılmış kesme noktalarını listelemek için kesme noktası "lbreak addr" (doğrusal için) veya "pbreak addr" (fiziksel) komutuyla ayarlanabilir; Onları "d numarası" silin. Tek adım (lar) ve yürütmeye devam etmek (devam).
Yürütme duraklatıldığında, örneğin "x" (doğrusal) ve "xp" (fiziksel), ardından çıktı formatı, bayt sayısı ve adres gibi bazı isteğe bağlı parametreleri kullanabilirsiniz.
Örnek:
x /30bx 0xC0000000
30 bayt onaltılık biçimde 0xC0000000 doğrusal adresinden dökümü yapacak.
Bazı durumlarda, dökümü ekranda okunacak kadar büyük olabilir. Bu durumlarda "writemem" komutunu kullanarak bir dosyaya yapabilirsiniz.
Sözdizimi:
writemem "filename" linearAddress lenght_in_bytes
öyleyse, 0xdeadbeef doğrusal adresinin ilk 1024 baytını "dökümü" dosyasına atmanız gerekirse, şöyle bir şey olur:
writemem "dump" 0xdeadbeef 1024
çalışmalı.
Bakınız http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html daha fazla bilgi için.
Belkide sen arıyorsun Simülasyonu kaydedin ve geri yükleyin :
CPU'ların durumu, bellek ve tüm cihazlar şimdi kaydedilebilir. Bochs'u çalıştırırken başlık çubuğunda "Askıya Al" adlı bir düğme olacaktır.
(vurgu eklenmiştir)
Deneyin memsave
ve pmemsave
Bochs konsolundaki komutlar.
‘
memsave addr size file
’addr boyutunda başlayan disk sanal belleğe kaydetme.
‘
pmemsave addr size file
’addr boyutunda başlayan diske fiziksel bellek dökümü kaydedin.