Tôi đang gỡ lỗi phần mềm này cho một hệ thống nhúng STM32. Trong một trong những chức năng chương trình của tôi tiếp tục đánh một số loại breakpoint:SIGTRAP mặc dù không có điểm ngắt được đặt; điểm ngắt phần cứng ẩn?
SIGTRAP, Trace/bẫy breakpoint
Tuy nhiên, trong GDB, khi tôi làm info breakpoints
tôi nhận được No breakpoints or watchpoints
. Điểm ngắt thực sự tương ứng với điểm ngắt mà tôi đã đặt khá lâu trước đây, trong một phiên bản khác của tệp thực thi. Khi tôi đặt điểm ngắt đó, GDB đã nói với tôi automatically using a hardware breakpoint on read-only memory
(hoặc một thông báo tương tự).
Tôi nghĩ điểm ngắt phần cứng vẫn còn trên chip của tôi, mặc dù đã tải phiên bản phần mềm mới. Nếu có thực sự là một điểm ngắt giả mạo, làm thế nào tôi có thể xác định vị trí và loại bỏ nó?
Đặt lại CPU. :) (hw điểm ngắt có thể được cài đặt lại, nếu gdb chết hoặc nếu nó không xóa tất cả các điểm ngắt hiện có trên lối ra/kết nối lại). – dbrank0
Lưu ý rằng đăng ký gỡ lỗi có thể tồn tại trên một số loại đặt lại. Một thiết lập lại nguồn đầy đủ chắc chắn sẽ xóa nó. – TJD
Bạn có ý nghĩa gì với "thiết lập lại nguồn đầy đủ"? Tôi đã thử rút/replugging, nhưng breakpoint vẫn tồn tại. – Randomblue