Tôi thường vô tình bước vào mã mà tôi không quan tâm trong khi gỡ lỗi trong Delphi.Trong Delphi: Làm thế nào để bỏ qua các phần của mã trong khi gỡ lỗi?
Hãy bắt đầu bằng cách nói rằng tôi biết rằng bạn có thể bước qua với F8 và bạn có thể chạy đến một dòng nhất định với f4.
Ví dụ:
function TMyClass.DoStuff():Integer;
begin
// do some stuff
bla();
end;
procedure TMyClass.Foo()
begin
if DoStuff()=0 then // press F7 when entering this line
beep;
end;
Ví dụ: Tôi muốn bước vào phương pháp DoStuff() bằng cách nhấn F7, nhưng thay vì đến đó, đầu tiên tôi kết thúc trong FastMM4.FastGetMem(), mà là một blob lớn của mã assembly mà rõ ràng là tôi không quan tâm vào lúc này.
Có một số cách để đi về việc này, và tôi không thích ai trong số họ:
Thêm một breakpoint trên "bla" (gần như vô dụng nếu bạn chỉ muốn bước vào DoStuff vào những dịp đặc biệt, như lặp lại 23498938);
Thay vì nhấn F7, di chuyển con trỏ sang "bla" và nhấn F4 (Hoạt động cho ví dụ đơn giản này. Trong thực tế, nó không);
Trong trường hợp FastMM: tạm thời tắt fastmm;
Có cách nào để gợi ý IDE rằng tôi không bao giờ quan tâm vào bước vào một khối nhất định mã, hoặc sao tôi luôn phải đặt breakpoint thêm hoặc sử dụng F4 để cố gắng tránh điều này?
Tôi hy vọng một số chỉ thị trình biên dịch ma thuật như {$ NODEBUG BEGIN/END} hoặc một cái gì đó tương tự.
Trong hầu hết các trường hợp có thể loại trừ toàn bộ đơn vị sẽ đủ chi tiết cho tôi, nhưng có thể tránh một số phương pháp hoặc thậm chí các dòng mã sẽ còn tốt hơn.
Cập nhật: Có lẽ CodeGear nên giới thiệu cái gì đó như skip-điểm (như trái ngược với break-points) :-)
Tuyệt vời! Nó hoạt động chính xác theo cách tôi muốn: trình gỡ rối không bước vào nó nữa, trong khi vẫn nhận được mã hoàn thành và có thể xem và sửa đổi mã "gỡ lỗi gỡ lỗi" nếu tôi muốn. –
Đối với FastMM4: báo cáo rò rỉ vẫn hoạt động, miễn là bạn không có {$ define RequireDebugInfoForLeakReporting}, không được xác định theo mặc định. –
Bạn thưa bạn, theo như tôi đang quan tâm, đã giành được Internet ngày hôm nay. Làm việc rất đẹp. Rất rất cảm ơn. – Alan