Tôi có một phần mở rộng Visual Studio móc vào các sự kiện gỡ lỗi. Khi trình gỡ lỗi dừng lại ở một dòng mã, số gọi lại IDebugEventCallback2
của tôi được gọi và tôi có thể tìm ra tên tệp và số dòng nơi trình gỡ lỗi đã dừng qua IDebugThread2::EnumFrameInfo
.Trong một Visual Studio Extension, có được phạm vi dòng của chức năng mà trong đó trình gỡ lỗi được dừng lại
Tôi muốn biết phạm vi của các dòng mã nguồn mà chức năng hiện tại kéo dài.
Tôi hy vọng có thể lấy được thông tin tôi cần từ giao diện trình gỡ lỗi - trình gỡ lỗi phải biết phạm vi chức năng của dòng. Nếu điều đó là không thể, tôi sẽ mở cho bất kỳ phương pháp nào khác. Trong một thế giới lý tưởng, giải pháp sẽ hoạt động mà không có hệ thống dự án - nhiều người, bao gồm cả bản thân tôi, sử dụng Visual Studio như một trình gỡ lỗi độc lập mà không cần sử dụng hệ thống dự án. (Ngoài ra, tôi không thể dựa vào Roslyn - nó cần phải làm việc trong các phiên bản hiện tại của Visual Studio.)
Chỉnh sửa: Phương pháp sử dụng Carlos FileCodeModel
hoạt động tốt, miễn là tệp là một phần của dự án. Tôi vẫn muốn biết liệu có một phương pháp không yêu cầu hệ thống dự án hay không.
Cảm ơn, nhưng điều đó không hoàn toàn phù hợp với tôi. 'GetSourceRange()' trả về phạm vi của câu lệnh hiện tại, không phải toàn bộ khung và 'Seek()' trả về 0x80004001 "Không được triển khai" từ trình gỡ lỗi C++. (Không phải của tôi downvote, BTW.) (Và cảm ơn cho con trỏ đến bài viết CodeModel tuyệt vời của bạn, mà tôi đã nhìn vào. :-)) – RichieHindle