2010-03-12 30 views
35

Hiện tại tôi có giải pháp A chứa cơ sở lớp miền và giải pháp B tham khảo các tệp nhị phân từ giải pháp A. Có cách nào để gỡ lỗi trực tiếp từ một đến khác với hai trường hợp trực quan không studio mở (một cho mỗi giải pháp). Tôi đã đọc rằng bạn chỉ có thể thêm các dự án hiện có từ giải pháp A vào giải pháp B. Có giải pháp nào khác hoạt động không? Tôi đã thử trực tiếp đính kèm giải pháp A vào những gì chạy thi hành trong giải pháp B nhưng nó sẽ không cho phép tôi đính kèm nhiều debuggers vào cùng một ứng dụng.Gỡ lỗi Thông qua các giải pháp khác nhau trong Visual Studio

Tôi nên lưu ý rằng khi tôi bước vào một phần của nó sẽ tự động trả về mã từ giải pháp A trong ví dụ B của Visual Studio để gỡ lỗi. Tôi cho rằng điều này là chấp nhận được, nhưng bạn không thể chỉ thiết lập các điểm ngắt tùy ý và chờ mã đánh chúng theo cách này.

Cảm ơn

Trả lời

30

Không có cách nào để có 2 trường hợp Visual Studio gỡ lỗi cùng một quy trình. Đây là một hạn chế của Windows, và hầu hết các hệ điều hành khác trong đó nhiều nhất là một quá trình có thể gỡ lỗi một quy trình khác.

Đây là kịch bản được hỗ trợ hoàn hảo mặc dù gỡ lỗi các tệp nhị phân không phải là một phần của giải pháp của bạn. Như bạn đã lưu ý, bạn có thể bước vào nhị phân từ Solution B một cách hạnh phúc trong khi gỡ lỗi từ Solution A.

Một mục sẽ gặp phải ở đây là tính năng Gỡ lỗi có tên "Chỉ Mã của tôi". Đây là một tính năng nhằm tối thiểu hóa trải nghiệm gỡ lỗi chỉ với mã trong giải pháp của bạn. Tuyệt vời cho các giải pháp bình thường nhưng xấu khi bạn đang gỡ lỗi nhị phân tùy ý. Nó có khả năng gây ra rất nhiều vấn đề xung quanh điểm phá vỡ bạn đang nhìn thấy. Bạn sẽ muốn vô hiệu hóa nó bằng cách làm như sau

  • Tools -> Options -> Debugging
  • không đánh dấu "Enable Just My Code"
+4

Cũng thấy câu trả lời của Chris. Bạn có thể thiết lập các điểm ngắt cho mã nguồn của Solution A trong Solution B mà không cần thêm dự án vào các giải pháp. Các tệp PDB của Visual Visual Studio (được tạo trong khi biên dịch, xem câu trả lời của Chris) và sau đó mở tệp nguồn của A trong Giải pháp B. Bạn chỉ có thể mở hoặc kéo-thả, bạn không phải thêm nó vào giải pháp. Một lưu ý, đôi khi breakpoint sẽ trông rỗng (như nó sẽ không được hit) cho đến khi nó được lắp ráp, có thể là lúc chạy. – Vimes

+0

@JohnB Khi bạn nói "drag-n-drop", ý bạn là gì? Nếu tôi kéo một tệp từ trình khám phá giải pháp của một phiên bản VS 2010 sang một trình duyệt khác, đích kéo hợp lệ duy nhất là trình soạn thảo văn bản và nó chỉ dán một bản sao của tên tệp vào tài liệu đang mở. Nếu tôi kéo tab trình soạn thảo từ một thể hiện của VS, tôi không thể thả nó vào cái kia. Có một cách nhanh chóng và dễ dàng để làm điều này mà không liên quan đến rối tung xung quanh với tập tin-> mở? – Weeble

+2

@Weeble, tôi kéo tệp nguồn từ Windows Explorer lên vùng văn bản Visual Studio. Đối với tôi, tệp này sẽ mở ra. – Vimes

14

Điều gì sẽ xảy ra nếu bạn tải biểu tượng một cách rõ ràng từ Giải pháp A?

Nếu bạn đi đến Tools-> Options-> Debugging-> Biểu tượng bạn có thể trỏ nó vào tập tin PDB từ Giải pháp A.

Sau đó, bạn có thể xem những biểu tượng được nạp từ nhị phân của mình bằng cách vào Debug-> Windows-> Modules trong khi gỡ lỗi.

14

Bạn chỉ có thể có một trình gỡ lỗi gỡ lỗi quy trình cùng một lúc. Vì vậy, điều đó có nghĩa là bạn chỉ cần một thể hiện của Visual Studio mở.

Tuy nhiên, bạn chỉ có thể mở tệp .cpp/.cs/bất kỳ từ Giải pháp B vào bản sao Visual Studio của Solution A và đặt điểm ngắt. Nó sẽ vẫn hoạt động mặc dù các tệp đó không thực sự là một phần của giải pháp.

+5

tôi đã được sử dụng VS trong 13 năm và chỉ học được từ bạn rằng người ta chỉ có thể mở một tập tin nguồn mà không được trình bày trong các giải pháp đang được gỡ rối và vẫn cho phép các thiết lập các điểm ngắt (nếu tìm thấy pdb và tệp nguồn ở cùng một vị trí và có thể là các điều kiện khác, nhưng vẫn còn. Tôi sẽ điều tra thêm). Cảm ơn rất nhiều Dean – buckley

1

Có một sửa chữa đơn giản cho việc này.

Mở cả hai tệp giải pháp và chạy tệp. Dừng thể hiện giải pháp thứ hai mà bạn muốn đính kèm để xử lý, nhưng đảm bảo rằng các cổng đang chạy. Bây giờ bạn có thể đính kèm quá trình cổng vào thể hiện giải pháp đầu tiên và gỡ lỗi như ma thuật.

1

Đây là những gì tôi đã làm.

Giả sử một dự án từ giải pháp A đề cập đến một dự án từ Giải pháp B và tôi muốn gỡ lỗi vào dự án B giải pháp từ Solution A project.

Giải pháp mở B trong Visual Studio.Đặt thuộc tính dự án thành "Sử dụng máy chủ cục bộ IIS Wb", đặt Url dự án và tạo Thư mục ảo.

Giải pháp mở A trong một Visual Studio Instance khác. Đặt thuộc tính dự án thành "Sử dụng máy chủ cục bộ IIS Wb" và chọn "Sử dụng IIS Express", đặt Url dự án và tạo Thư mục ảo.

Nhấn F5 và bắt đầu gỡ lỗi Giải pháp B thể hiện của Visual Studio. Sau đó nhấn F5 và bắt đầu gỡ lỗi Giải pháp Một thể hiện của Visual Studio. Bây giờ cả hai trường hợp của Visual Studio sẽ ở chế độ gỡ lỗi. Bắt đầu từ Giải pháp A bây giờ và bạn sẽ có thể gỡ lỗi vào Giải pháp B giống như nếu cả hai dự án đều nằm trong cùng một giải pháp.

Chìa khóa ở đây là "Sử dụng IIS express" cho một và "Máy chủ Web IIS cục bộ" cho dự án khác. Điều này sẽ cho phép bạn có hai trình gỡ rối chạy cùng một lúc.

+0

Điều này sẽ chỉ hoạt động nếu bạn đang gỡ lỗi một ứng dụng web. Tôi tin rằng OP đang làm việc với các tập tin thực thi. –

0

Đảm bảo .dll và .pdb nằm trong thùng. Bạn sẽ có thể gỡ lỗi cho giải pháp khác được mở trong Visual Studio khác.

Chúng tôi thường có một thư mục (ví dụ: Phụ thuộc) nơi các dll được tham chiếu từ đó. Đặt dll trong thư mục này. Các Dll được đẩy vào thư mục này khi chúng ta xây dựng dự án được tham chiếu (bằng cách sử dụng các sự kiện Build, cũng có những cách khác).

2

Điều này có thể là muộn, nhưng đối với bất kỳ ai vẫn cần một giải pháp thực sự và dễ dàng. Chỉ cần thay đổi thuộc tính Giải pháp của bạn để sử dụng Nhiều Dự án Khởi động và thiết lập dự án nào sẽ bắt đầu đồng thời.

theo liên kết này

Debug Multiple Projects at the Same Time in Visual Studio

+0

Có một sự khác biệt, tuy nhiên, giữa việc khởi động nhiều dự án (ví dụ: nếu bạn cần một máy chủ đang chạy) và chỉ tham chiếu một dự án bên ngoài để bạn có thể bước vào mã. –

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