Tôi đã có một vấn đề lớn với breakpoints không được nhấn trong một Delphi 6 DirectShow DLL. Tôi sẽ tải DLL (AX) trong IDE và chạy nó với Graph Edit làm chương trình Host và không có điểm ngắt nào sẽ kích hoạt. Tôi đã thử di chuyển FastMM4 DLL vào thư mục dự án, gỡ bỏ FastMM4 hoàn toàn, bật và tắt Debug DCUs, làm sạch các thư mục dự án, hủy đăng ký và đăng ký lại DLL, mọi thứ tôi có thể nghĩ đến. Không có gì hiệu quả. Mỗi khi tôi chạy chương trình máy chủ tôi thấy tải DLL của tôi với thông báo "Không có thông tin gỡ lỗi" trong trình xem sự kiện. Sau đó, trong một tìm kiếm tuyệt vọng của Google, tôi đã tìm thấy một bài đăng cho C++ Builder đề nghị thử tùy chọn trình liên kết "remote debug symbols":DLL Các điểm ngắt không bị tấn công bằng các tùy chọn "các biểu tượng gỡ lỗi từ xa", tại sao và bất kỳ rủi ro bảo mật nào với những người này?
Project -> Options -> Linker (Tab) -> Exe và tùy chọn DLL (hộp nhóm)) -> "Bao gồm các ký hiệu gỡ lỗi từ xa" (đã chọn nó)
Đột nhiên điểm ngắt của tôi bắt đầu bị trúng. Dưới đây là câu hỏi của tôi:
1) Tại sao tính năng này hoạt động? Có phải vì tùy chọn hoặc vì tùy chọn này đã kích hoạt một số hoạt động của Trình biên dịch/Trình liên kết khác cố định mọi thứ? Tôi muốn biết để tôi có thể khắc phục sự cố này một cách đáng tin cậy trong tương lai khi nó xảy ra lần nữa.
2) Các biểu tượng gỡ lỗi từ xa có phải là một lập trình viên thù địch có thể sử dụng để theo dõi sâu chương trình của tôi không? Nói cách khác, chúng có phải là một nguy cơ bảo mật nếu để lại xung quanh?
Không tranh đấu, xuất bản mã nguồn. – OnTheFly
Phiên bản nào của Delphi? Delphis cũ hơn không tốt lắm trong việc gỡ lỗi các DLL. Tôi đã đôi khi tìm thấy nó cần thiết để đặt exe máy chủ trong cùng một thư mục như DLL. Nó chắc chắn phải đủ biên dịch DLL với các tùy chọn gỡ lỗi tiêu chuẩn. Không cần ký hiệu từ xa. –
@DavidHeffernan. Delphi 6. –