2013-03-08 15 views
6

n ile her adım attığımda, yürütülecek bir sonraki ifadeyi yazdırır.GDB'de Yazdırma Akışı Tablosu

n yazmış gibi, ancak aslında kodu atmadan, nasıl yürütülecek sonraki ifadeyi nasıl görebilirim?

Şu anda where kullanıyorum ve bu bana bir sonraki deyimin satır numarasını verir ve bazı kaynak kodlarını görmek için list'u kullanabilirim. İstediğimi elde etmek için iki ayrı komut gerektiriyor mu?

+0

Ayrıca 'kod odak/pencereyi hareket arka arkaya iki kez' list 'çalışan Nedense --tui' – nos

cevap

1

Ev dizininizde macro ürününü .gdbinit numaralı telefondan tanımlayın.

define shownext 
where 
list 
end 

Sanırım çalışmaları belirtilen ne olur emin değilim, ama bu gibi şeyler yapmak için nasıl here bakın.

+0

gdb yürütmeyi düşünün. –

+0

@infact - tanımlanan davranış budur. Dokümantasyonda "Yazdırılan son satırlar bir liste komutuyla basılmışsa, bu satırlar son satırları izleyerek yazdırılır;" – borrible

0

Gdb'niz Python desteği ile oluşturulmuşsa, bu list.current.py komut dosyası, istediğinizi yapan yeni bir liste akımı gdb komutu ekleyecektir.

Numune oturum:

$ gdb -x list-current.py /bin/true 
(gdb) start 
Temporary breakpoint 1 at 0x4014c0: file true.c, line 59. 
Starting program: /usr/bin/true 

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffde88) at true.c:59 
59 if (argc == 2) 
(gdb) list-current 
59 if (argc == 2) 
(gdb) list-current 3 
59 if (argc == 2) 
60  { 
61  initialize_main (&argc, &argv); 
(gdb) list-current -2 
58  argument. */ 
59 if (argc == 2) 
(gdb) 
1

deneyin "çerçeve" komutu. Böyle bir şey göreceksiniz:

(gdb) frame 
    #0 main() at dummy.c:11 
    11 FILE*f = fopen("somefile","r"); 
    (gdb)