2010-03-05 29 views
11

Bazı programlarda hata ayıklamak istiyorum. Tüm çağrılardan bazı işlevlere geri gitmeye ihtiyacım var, ör. koyar.Automate gdb: her çağrıda backtrace işlevini göster

Şimdi böyle gdb'nin script kullanın:

Function "puts" not defined. 
Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal] 
/root/script:5: Error in sourced command file: 
No breakpoint number 1. 

Ben kütüphane çağrısı için komut kesme noktası ayarlayabilirsiniz nasıl

set width 0 
set height 0 
set verbose off 
break puts 
commands 1 
backtrace 
continue 
end 

Ama

gdb --batch --command=script --args ./some_program arguments 

ile başlayan bir hata verir ?

cevap

18

yerine bu deneyin:

set width 0 
set height 0 
set verbose off 
start # runs to main, so shared libraries are loaded 
     # after you reach main, GDB should have libc symbols, "puts" among them 
break puts 
commands 1 
backtrace 
continue 
end 

Bu işe yaramazsa, sistemi sürümü işletim belirtiniz.

DÜZENLEME: osgx doğru işaret ettiği gibi, diğer alternatif

set breakpoint pending on 

+1

Peki ya break puts önce ayarı "kesme bekleyen" eklemektir? А еще - спасибо. – osgx

+6

'break' yerine 'start' kullanabilirsiniz; –

+0

run Evet, 'start' daha iyidir. Cevap sabit, teşekkürler! –