Tôi đang gỡ lỗi một sự cố và tôi muốn ngắt mọi cuộc gọi phương thức có một đối tượng cụ thể làm thông số 'this'. Điều này có thể xảy ra trong GDB không?GDB ngắt cuộc gọi hàm đối tượng
Trả lời
Tham số này chỉ nên là các phương thức được bao gồm trong chính lớp đó. Vì vậy, bạn chỉ cần thiết lập các điểm ngắt cho tất cả các phương thức của lớp bạn đang xem. Tôi không chắc chắn có một cách đơn giản để làm điều đó mặc dù.
Tôi cho rằng OP có một phương pháp cụ thể trong đầu. Nhưng tôi nghi ngờ việc giải thích của bạn chính xác hơn. Làm thế nào bạn sẽ thiết lập một điểm dừng cho một phương pháp? – Omnifarious
Thật dễ dàng. Bạn có thể sử dụng lệnh như b A::a if (this==0x28ff1e)
.
Có thể chỉ định một ký tự đại diện thay cho 'A :: a' có khớp với tên của tất cả các phương thức trong lớp' A' không? – Omnifarious
Tôi không biết bất kỳ cách nào để sử dụng ký tự đại diện trong gdb, có thể anh ta cần một chương trình để tạo các lệnh để đặt thời gian ngắt. – user685684
@NathanielFlath - Bạn biết không biết lệnh gdb 'rbreak' có thể không làm những gì bạn muốn ... – Omnifarious
Tôi muốn phá vỡ trên tất cả các cuộc gọi phương pháp đó có một đối tượng cụ thể như tham số 'này'
Điều này có nghĩa rằng bạn muốn phá vỡ trên tất cả các chức năng thành viên của một lớp học đặc biệt mà đối tượng đã được khởi tạo.
Hãy nói cho thuận tiện mà tất cả các hàm thành viên được định nghĩa trong một file cpp cụ thể như myclass_implementation.cpp
Bạn có thể sử dụng gdb để áp dụng breakpoint trên tất cả các chức năng bên trong myclass_implementation.cpp
theo cách này:
rbreak myclass_implementation.cpp:.
Hãy nói rằng bạn muốn phá vỡ một số chức năng cụ thể như hàm getter bắt đầu bằng Get, sau đó bạn có thể sử dụng gdb để áp dụng các điểm ngắt theo cách này:
rbreak myclass_implementation.cpp:Get*
- 1. gdb in đẹp với các cuộc gọi hàm trực tiếp
- 2. Bước qua các cuộc gọi thư viện với gdb/gdbserver
- 3. Cách đặt điểm ngắt trên hàm python trong gdb
- 4. Đặt điểm ngắt trong GDB
- 5. Có một điểm chuỗi giữa một cuộc gọi hàm trả về một đối tượng và một cuộc gọi phương thức trên đối tượng đó không?
- 6. R - Lấy biểu mẫu từ đối tượng cuộc gọi
- 7. Gọi đệ quy một đối tượng hàm
- 8. Gọi hàm ảo bằng đối tượng dereference
- 9. Điểm ngắt gdb trên pthread_create
- 10. Gọi hàm từ hàm bên trong đối tượng (đối tượng theo nghĩa đen)
- 11. Sử dụng hàm tạo trong một cuộc gọi hàm?
- 12. Khung thực thể AsNoTracking ngắt cuộc gọi đến Distinct
- 13. Làm thế nào để thiết lập một điểm ngắt trong gdb cho tất cả các yêu cầu của một hàm?
- 14. SetTimeout không trì hoãn cuộc gọi hàm
- 15. Cuộc gọi hàm trong mã XAML?
- 16. Các cuộc gọi hàm jquery Delay
- 17. trích xuất tên cuộc gọi chức năng từ một cuộc gọi hàm
- 18. javascript gọi hàm trên đối tượng cửa sổ
- 19. Gọi một đối tượng bên trong một hàm
- 20. GDB báo cáo địa chỉ sai cho tham số trong hàm dựng của đối tượng C++
- 21. Làm thế nào để bạn gọi hàm đối tượng cha từ đối tượng con trong javascript
- 22. Sự khác biệt giữa đối tượng hàm và đối tượng có thể gọi là gì?
- 23. Gọi hàm Javascript từ cuộc gọi lại C++ trong V8
- 24. Hàm Javascript không trả về đối tượng khi có ngắt dòng giữa câu lệnh trả về và đối tượng?
- 25. Làm thế nào để gọi khóa của đối tượng bên trong của cuộc gọi lại?
- 26. Làm thế nào để thử một cuộc gọi hàm trên một đối tượng cụ thể với Moq?
- 27. Javascript: Chuyển tiếp các cuộc gọi hàm nhận số biến số của đối số
- 28. thiết lập điểm ngắt thoát gdb không hoạt động?
- 29. Tìm hiểu xem đối số chức năng có phải là một phần của cuộc gọi hàm
- 30. gdb: ngắt trong thư viện được tải bởi python
Bạn có phải là địa chỉ cụ thể không? Bạn không thể lấy kiểu đối tượng từ con trỏ này. – Pubby
Bạn sẽ phải sử dụng điểm ngắt có điều kiện. Những thứ đó tồn tại, nhưng tôi không biết cách thiết lập chúng. gdb phần lớn là một bí ẩn với tôi, và các guis khác nhau xung quanh nó làm nhiều hơn để che khuất hơn để làm cho nó dễ tiếp cận. – Omnifarious
Tôi có nghĩa là một địa chỉ cụ thể - Tôi có một đối tượng đang gắn bó xung quanh, và tôi muốn biết những gì được gọi trên đó. –