2011-11-17 36 views
47

Tôi có chương trình .NET không thể được chạy từ Visual Studio vì một số lý do (tệp Excel được tạo từ dự án mẫu Excel 2010) mà tôi cần gỡ lỗi các sự kiện khởi động.Cách đính kèm Visual Studio vào một quá trình chưa bắt đầu?

Nếu tôi muốn gỡ lỗi các sự kiện xảy ra sau khi khởi tạo chương trình thì không có vấn đề gì. Tôi chạy chương trình từ trình thám hiểm, đính kèm quá trình vào Visual Studio và thêm một số điểm ngắt trong mã. Nhưng ở đây, tôi cần phải đặt điểm ngắt vào các sự kiện khởi động. Những gì tôi cần là để có thể đính kèm các quy trình để Visual Studio không phụ thuộc vào một PID nhưng trên một tên quá trình cụ thể hoặc bất cứ giải pháp khác mà sẽ làm việc.

Tất nhiên, thêm Thread.Sleep(1000) vào các sự kiện khởi động của tôi để cho tôi một chút thời gian để đính kèm quy trình trong Visual Studio đã hết câu hỏi!

Cảm ơn.

Trả lời

70

Thực ra bạn có thể! Nhưng bạn không gắn vào nó, bạn bắt đầu nó. Trên các thuộc tính của dự án của bạn, trên tab gỡ lỗi, bạn có khả năng xác định một chương trình bên ngoài. Chỉ cần nhập đường dẫn của chương trình bạn đang bắt đầu (ví dụ: Excel)

+3

+1 Tôi đã sử dụng điều này rất nhiều lần – stijn

+2

Cảm ơn bạn đã lừa! Nó hoạt động hoàn hảo. – Ucodia

+3

Giải pháp tốt, nhưng chỉ cần lưu ý rằng nhấn F5 không hoạt động trong trường hợp này. Thay vào đó, nhấp chuột phải vào dự án liên quan và nhấp vào 'Gỡ lỗi> Bắt đầu phiên bản mới' từ trình đơn ngữ cảnh. –

3

Nếu không có quá trình nào thì Visual Studio không thể đính kèm vào đó.

Tuy nhiên, bạn có thể đặt chương trình khởi động của dự án thành một thứ khác với đầu ra của dự án của bạn.

+0

Tôi đã điều tra xem điều tôi muốn làm là đúng và thực sự là vậy. Tình hình của tôi không phải là một trường hợp gỡ lỗi Visual Studio bình thường. Tôi có một dự án mẫu Excel 2010 được phát triển trong Visual Studio và các trang mẫu có các sự kiện khởi động. Tôi chạy mẫu này từ Visual Studio, thêm một số dữ liệu trong bảng tính Excel của tôi và lưu tệp trên đĩa. Sau đó, cách duy nhất tôi có thể mở tập tin này cũng dựa vào bản mẫu, là mở nó từ trình thám hiểm, do đó tôi không thể gỡ lỗi các sự kiện khởi động trong trường hợp này và tất nhiên tôi có một số xử lý dữ liệu khi khởi động như databinding. – Ucodia

13

Tôi đã gỡ một ++ Plugin C trong một quá trình bên ngoài sinh ra mà bị rơi bằng cách ném một ngoại lệ lúc khởi động và điều này đã làm việc một cách hoàn hảo đối với tôi:

Thêm miễn phí Reattach Extension for Visual Studio. Yêu cầu nó gắn lại với tên quy trình trước khi nó được khởi chạy. Nó sẽ bật một hộp thoại kiểu cho biết nó đang chờ tên quá trình khởi chạy.

Bây giờ khởi chạy quá trình và trình gỡ lỗi Visual Studio sẽ đính kèm ngay lập tức, bắt ngoại lệ và nhấn điểm ngắt.

+0

Mở rộng tuyệt vời, cảm ơn! – Ucodia

+0

Một nghìn lần có! – itslittlejohn

4

Tôi tìm thấy câu trả lời này khi tôi đang tìm kiếm một cái gì đó tương tự. Trong trường hợp của tôi, tôi không thể sử dụng chương trình khởi động của dự án vì nó cần được bắt đầu trong một môi trường rất cụ thể mà tôi không thể sinh sản dễ dàng (tên: bắt đầu từ Cygwin).

Tôi đã xem Tiện ích mở rộng Reattach là suggested by mrstrange và cũng là phần mở rộng tương tự Attach To Anything ... nhưng thực thi của tôi dường như đóng quá nhanh để tiện ích mở rộng thông báo và đính kèm.

gì cuối cùng đã giúp tôi được điều này: https://stackoverflow.com/a/4042545/1560865, có sự tham khảo các bài viết MSDN How to: Launch the Debugger Automatically, mà trong lần lượt liệt kê các bước sau:

  1. Bắt đầu Registry Editor (regedit).
  2. Trong Registry Editor, mở thư mục HKEY_LOCAL_MACHINE.
  3. Điều hướng đến các tùy chọn thực thi tệp HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ currentversion \ image.
  4. Trong Tùy chọn thực thi tệp hình ảnh thư mục, định vị tên của ứng dụng bạn muốn gỡ lỗi, chẳng hạn như myapp.exe. Nếu bạn không thể tìm thấy ứng dụng mà bạn muốn gỡ lỗi:
    a.Nhấp chuột phải vào thư mục Tệp thực thi hình ảnh và trên menu lối tắt, nhấp Khóa mới.
    b. Nhấp chuột phải vào khóa mới và trên menu lối tắt, nhấp vào Đổi tên. c. Chỉnh sửa tên khóa thành tên ứng dụng của bạn; myapp.exe, trong ví dụ này.
  5. Nhấp chuột phải vào thư mục myapp.exe và trên menu lối tắt, nhấp vào Giá trị chuỗi mới.
  6. Bấm chuột phải vào giá trị chuỗi mới và trên menu lối tắt, bấm Đổi tên.
  7. Thay đổi tên thành trình gỡ lỗi.
  8. Nhấp chuột phải vào giá trị chuỗi mới và trên menu lối tắt, hãy nhấp vào Sửa đổi. Hộp thoại Chỉnh sửa chuỗi xuất hiện.
  9. Trong hộp Giá trị dữ liệu, nhập vsjitdebugger.exe.
  10. Nhấp vào OK.
  11. Từ menu Registry, hãy bấm Thoát.
  12. Thư mục chứa vsjitdebugger.exe phải nằm trong đường dẫn hệ thống của bạn. Để thêm nó vào đường dẫn hệ thống, hãy làm theo các bước sau:
    a. Mở Bảng điều khiển trong chế độ xem Cổ điển và nhấp đúp vào Hệ thống.
    b. Nhấp vào Cài đặt hệ thống nâng cao.
    c. Trong Thuộc tính hệ thống, hãy nhấp vào tab Nâng cao.
    d. Trên tab Nâng cao, hãy nhấp vào Biến môi trường.
    e. Trong Môi trường hộp Biến thoại, dưới Hệ thống biến, chọn Đường dẫn, sau đó nhấp vào nútChỉnh sửa.
    f. Trong hộp thoại Chỉnh sửa Biến hệ thống, hãy thêm thư mục vào hộp Biến giá trị. Sử dụng dấu chấm phẩy để tách nó khỏi các mục nhập khác trong danh sách.
    g. Nhấp vào OK để đóng hộp thoại Chỉnh sửa Biến hệ thống.
    h. Bấm OK để đóng các ô Biến môi trường. i. Nhấp vào OK để đóng các Thuộc tính hệ thống hộp thoại.
  13. Bây giờ, hãy sử dụng bất kỳ phương pháp nào để khởi động ứng dụng của bạn.Visual Studio sẽ bắt đầu và tải ứng dụng

Hy vọng rằng điều này sẽ giúp bất kỳ ai khác trong tương lai!

2

Thực hiện theo các bước sau nếu bạn có Visual Studio 2017:

  1. File> Open> Dự án/Giải pháp
  2. Chọn .exe
  3. gỡ lỗi của bạn> Start Debugging

Dễ dàng hơn nhiều hơn các đề xuất khác: bạn không phải gây rối với các thuộc tính dự án và không cần mở rộng.

+0

Nhưng bạn sẽ phải nói với Visual Studio nơi các biểu tượng gỡ lỗi là, nếu nó không tìm thấy chúng tự động –

+0

nhanh chóng dễ dàng có thể làm trong 5 giây, tôi thích nó. Cảm ơn – ComradeJoecool

Các vấn đề liên quan