Ok, tôi vừa xác minh rằng tôi có thể bước qua mã bằng quy trình này. Tôi đang làm điều này trong ArcMap, nhưng tôi nghĩ nó nên áp dụng cho ArcCatalog vì quy trình xử lý các tệp DLL gỡ lỗi và không phải là một mục cụ thể ESRI. Tôi đã xác nhận điều này trong cả ArcMap 10.2.2 và ArcCatalog 10.2.2. Vì đây là quy trình Windows xử lý trực tiếp DLL, các phiên bản phần mềm ESRI không nên quan trọng.
Tôi đang sử dụng Visual Studio để đính kèm vào một quy trình .
Tôi có thể bước qua một phần mở rộng được biên dịch (DLL) bằng cách sử dụng quy trình này khi DLL được gọi trong một chương trình khác.
Đây là những gì tôi đang làm ...
Trong Visual Studio, mở dự án mở rộng của bạn. Tôi đã xây dựng tiện ích mở rộng của mình trong VS 2010 C # Express, nhưng tôi đang sử dụng VS 2013 Ultimate để làm điều này. Tôi không chắc chắn nếu Đính kèm quy trình là một tùy chọn trong phiên bản 2010 Express. Tôi đã không nhìn thấy nó, nhưng nó có thể bị ẩn ở đâu đó vì đây là phiên bản Express.
Mở sản phẩm ESRI của bạn và cài đặt bổ trợ. Bây giờ, quay lại VS, nhấp vào Đính kèm để xử lý và chọn quy trình sản phẩm ESRI của bạn. Của tôi là ArcMap.exe . Từ đây, Visual Studio sẽ đính kèm trình gỡ lỗi của nó vào chương trình và khi DLL được thực thi mà bạn đã mở và các điểm dừng được đặt, nó sẽ dừng ở đó. Điều này sẽ hoạt động như bất kỳ chương trình nào khác mà bạn đang gỡ lỗi trong Visual Studio. Nó có thể kéo dài một số gỡ lỗi vào một số mục ESRI mặc dù mã rất có thể bị xáo trộn nên không hữu ích lắm.
Tôi chắc chắn rằng tôi đã cài đặt bổ trợ từ thư mục Phát hành cho dự án của mình. Theo như tôi có thể nói, ESRI không sao chép DLL vào một trong các thư mục của nó, nhưng họ sử dụng Tiện ích đăng ký hội Esri của họ để đăng ký vị trí của DLL để hệ thống biết nơi tìm nó khi được tham chiếu từ sản phẩm ESRI.
FYI: Tôi sử dụng quy trình này để gỡ lỗi các thư viện lớp tôi viết trong một dự án đang được sử dụng trong một dự án khác. Lý thuyết tương tự ở đó nên áp dụng bổ trợ ESRI vì chúng chỉ là các thư viện lớp (DLL) được gọi vào một chương trình khác. Ngoài Visual Studio, tôi tin rằng bất kỳ trình gỡ lỗi Windows nào khác cũng có thể đính kèm vào DLL.
Xin vui lòng gửi ý kiến về cái này Tôi đã nghĩ rằng nó sẽ hoạt động trong một thời gian và rất tò mò muốn xem những người khác công bằng với phương pháp này như thế nào.
EDIT Tôi vừa tạo một bổ trợ ArcCatalog mới, bao gồm một nút đơn giản. Tôi đã thêm một phép gán chuỗi string stophere = "debugger stopped!";
trong trình xử lý sự kiện cho sự kiện nhấp chuột của nút. Thông qua ArcCatalog, nó đã dừng sử dụng phương thức Đính kèm để xử lý . Visual Studio 2010 thông tin về quá trình là ở đây .
Có một vài điều trên MSDN về việc gỡ lỗi DLL thông qua các phương thức khác nhau trong Visual Studio và Windows Debugger. Cá nhân tôi thấy Đính kèm để xử lý tốt hơn so với bắt đầu một phương thức chương trình bên ngoài và cũng tốt hơn so với sử dụng trình gỡ lỗi từ xa .
Nhược điểm duy nhất của phương pháp này là bạn mất phương pháp F5 nơi bạn gỡ lỗi trực tiếp từ bên trong Visual Studio. Vì vậy, điều đó có nghĩa là, thay đổi mã của bạn, cài đặt bản cập nhật, khởi động ArcCatalog, Đính kèm vào Quá trình, sau đó nhấn điểm dừng của bạn. Tuy nhiên, tôi thấy rằng phương pháp này là một phương pháp khá tốt để biết trong trường hợp bạn gặp phải vấn đề như bạn có. Quá trình này có thể lâu hơn một chút, nhưng nó là một phương pháp chắc chắn để có được kết quả của bạn.