2012-12-18 24 views
22

Tôi muốn xác định trước một số điểm ngắt trong tập lệnh gdb và gọi một số lệnh đặc biệt tại các điểm ngắt này và sau đó tự động tiếp tục thực hiện chương trình. Vì vậy, lý tưởng, tôi muốn có một kịch bản gdb như sau:gdb scripting: thực hiện các lệnh tại điểm ngắt được chọn

b someFunction 
... 
if breakpoint from above reached do: 
    print var1 
    call someOtherFunction 
    continue 
done 

Ngoài ra một thực tế đáng tiếc là, mà tôi không thể dựa trên giao diện python cho việc sử dụng breakpoint, như các phiên bản gdb tại máy chủ tôi hiện đang làm việc quá cũ!

+0

bản sao có thể có của [Thực hiện hành động cụ thể khi một số điểm ngắt nhất định trong gdb] (http://stackoverflow.com/questions/6517423/do-specific-action-when-certain-breakpoint-hits-in-gdb) –

Trả lời

30

Bạn nên xem xét lệnh command, cho phép bạn thêm lệnh gdb dưới dạng điểm ngắt được nhấn. Xem phần breakpoint command list của sổ tay gdb.

Ví dụ:

break someFunction 
commands 
print var1 
end 

chí, khi breakpoint trên someFunction là hit, tự động print var1.

+8

Cảm ơn Bạn, đó là chìa khóa! Một chút nhận xét bổ sung: Nếu bạn có đầu ra mở rộng bằng cách sử dụng lệnh như vậy và không muốn nó dừng lại mỗi khi nó chạm đáy của thiết bị đầu cuối (vì gdb sẽ hỏi "Type để tiếp tục hoặc q để thoát") , chỉ cần nói "đặt pagination off" trong gdb hoặc script của bạn. –

+0

Lưu ý rằng thao tác này không hoạt động ở chế độ không tương tác (ví dụ: chế độ -match hoặc MI) cho đến khi https://sourceware.org/bugzilla/show_bug.cgi?id=10079 được sửa – pixelbeat

+1

Nếu nói tôi thực hiện các lệnh giống nhau cho nhiều điểm ngắt, sau đó làm thế nào để làm điều đó? (không dán bản sao;) –

Các vấn đề liên quan