2011-05-23 10 views
5

Geçerli hata ayıklama örneğinde CPU kayıtlarına nasıl erişebilirim? Gdb'den örneğin printf "0x%x", $eax ve set $eax_b = $eax numaralarını arayabilirsin, ayrıca gdb python desteği ile bunu yapmanın bir yolu var mı? Ya da ellerinde kayıtların saklanmasını istediğim bir dizide saklayan save-reg "eax" $eax gibi bir python işlevi oluşturmalı mıyım? Öte yandan Kayıt defterine python ile gdb'de nasıl erişirim

, gdb komut dosyası ile de set $eax = 1000 örneğin, bu ben de yerine gdb senaryonun, bir piton komut dosyası içinden yapmak istiyorum yapabilirsiniz.

cevap

8

GDB sicillere direkt erişim sunar için Python API inanmıyorum, ama onunla ne yapmak istediğinize bağlı olarak ya gdb.execute() ile gdb komutunu değerlendirerek erişmek veya "$eax" değerlendirebilirsiniz gdb.parse_and_eval() ile ifadesi:

(gdb) p $rbx 
$23 = 140737488348072 
(gdb) python print type(gdb.parse_and_eval("$rbx")), gdb.parse_and_eval("$rbx") 
<type 'gdb.Value'> 140737488348072 

(. Bu örnek gdb istemine olmakla gdb modül içinde gDB infaz diğer kodunda farklı değildir)

+0

Ben orada eter içinde olduğunu sanmıyorum, ama bu sanırım hile yapacak! Teşekkürler! – DipSwitch

+2

Eh, 'parse_and_eval' GDB'de gömülü herhangi bir Python kodu için gerçekten işe yarayan. Başka bir yolu yoktur çünkü zaten işleyiş şekli :) –

+0

@ThomasWouters Anlamadım: Seçili cevap python kullanarak aşağıdakileri nasıl açıklar? '$ eax = 1000' set – microMolvi

İlgili konular