Gdb'de bir programda hata ayıklama yapıyorum ve programın 0x08049000 - 0x0804a000 bellek bölgesine erişildiğinde programın durmasını istiyorum. Bellek kesme noktalarını elle ayarlamaya çalıştığımda, gdb aynı anda iki konumdan daha fazlasını desteklemiyor gibi görünüyor.gdb'de bir bellek aralığı mı izleyin?
(gdb) awatch *0x08049000
Hardware access (read/write) watchpoint 1: *0x08049000
(gdb) awatch *0x08049001
Hardware access (read/write) watchpoint 2: *0x08049001
(gdb) awatch *0x08049002
Hardware access (read/write) watchpoint 3: *0x08049002
(gdb) run
Starting program: /home/iblue/git/some-code/some-executable
Warning:
Could not insert hardware watchpoint 3.
Could not insert hardware breakpoints:
You may have requested too many hardware breakpoints/watchpoints.
bu sorular ve cevap o valgrind ile bunu yapmak mümkün olabilir, oldu edilmiş bir soru zaten var. Ne yazık ki cevap, valgrind kılavuzuna herhangi bir örnek veya referans içermemektedir, bu yüzden çok aydınlatıcı değildi: How can gdb be used to watch for any changes in an entire region of memory?
Yani: Tüm bellek bölgesini nasıl izleyebilirim?
ilginci için the Valgrind user manual on gdb integration bakın http://stackoverflow.com/questions/ 13410941/set-breakpoint-on-her-line-in-gdb/31658056 # 31658056 –
x86 8 bayta kadar küçük iz aralığı destekler: https://en.wikipedia.org/wiki/X86_debug_register –