Có bao nhiêu cuộc gọi đến OutputDebugString
đang có trong dự án của bạn? Bạn có thể sử dụng hộp thoại "Tìm trong tệp" để tìm tất cả và nếu chúng không quá nhiều, sẽ không có vấn đề gì.
Nếu không, bạn có thể - tất nhiên - hãy sử dụng tìm kiếm và thay thế và thay thế tất cả OutputDebugString(
bằng raise Exception.Create(
.
Bạn cũng có thể viết một hàm
procedure OutputDebugString(const Str: string);
begin
raise Exception.Create(Str);
end;
trong một đơn vị được sử dụng bởi tất cả các đơn vị khác trong dự án. Nếu chỉ có đơn vị mới này được khai báo sau Windows.pas
trong danh sách uses
, hàm mới này sẽ được sử dụng thay cho hàm Windows.pas.
Cập nhật
Có, bạn có thể đặt điểm ngắt trong Windows.pas. Trước tiên, trong dự án của bạn, hãy vào Tùy chọn dự án và trong Gỡ lỗi, chọn "Sử dụng gỡ lỗi DCUs". Sau đó, bạn có thể đi đến Windows.pas và đặt một breakpoint tại dòng 30.769:
procedure OutputDebugString; external kernel32 name 'OutputDebugStringW';
Nguồn
2010-11-23 17:29:21
Quá nhiều lây lan trên toàn bộ dự án và thành phần .. Tôi thậm chí không chắc liệu thư có đến từ mã của riêng hay mã của bên thứ ba hay không. – Harriv
Có, gỡ lỗi DCU thực hiện điều đó. Bây giờ tôi chỉ cần tìm ra cách để thiết lập điều kiện .. – Harriv
nếu nó không phải là mã của bạn nhưng một số đơn vị bạn sử dụng (gián tiếp) cuộc gọi cũng có thể đi đến OutputDebugStringA. – Remko