2016-11-01 35 views
5

Tôi đang phát triển ứng dụng .NET core (.NET Standard 1.6) trong VS2015. Ứng dụng gọi mã C++ qua P/Invoke. Bây giờ tôi cần phải bước vào mã C/C++ của dự án dll gốc của tôi.Làm thế nào để gỡ lỗi và bước vào một dự án mã nguồn gốc từ bên trong một dự án C# lõi .NET?

Trong ứng dụng .NET thường xuyên, bởi cho phép không được quản lý mã gỡ lỗi trong cửa sổ thuộc tính của ứng dụng, chúng ta có thể bước vào C/C++ mã trực tiếp:

step into the C/C++ code

Nhưng tôi không thể tìm tùy chọn đó trên dự án lõi .NET. Và tôi biết rằng tôi có thể đính kèm trình gỡ lỗi vào ứng dụng để gỡ lỗi mã gốc chỉ, nhưng điều đó không phù hợp với trường hợp của tôi.

Một lần nữa, tôi muốn gỡ lỗi từ mã C# được quản lý thành mã C/C++ gốc.

Bất kỳ ý tưởng nào?

Có lẽ tôi nên chuyển về .NET Framework để tôi có thể gỡ lỗi mã gốc. Thật khó để gỡ lỗi bằng printf. :(

+0

cũng đã bỏ phiếu để đóng chủ đề như tắt. đọc câu hỏi này về những câu hỏi có thể được hỏi http://stackoverflow.com/help/on-topic –

+0

Vâng, tôi biết. Nhưng tôi chỉ hỏi [một câu hỏi tương tự] (http://stackoverflow.com/questions/6738006/how-do-i-debug-a-native-code-project-from-inside-a-managed-code- project-cc) ngoại trừ việc tôi đang sử dụng .NET Core không .NET Framework. Vì câu hỏi đó không bị đóng như chủ đề, tôi sẽ không đóng cửa. – zwcloud

+0

Gif được sử dụng để minh họa ý nghĩa của ** bước vào mã C/C++ trực tiếp **. – zwcloud

Trả lời

1

CẬP NHẬT
Các tính năng có thể đã được thực hiện, xem this.


Cũng như @cynic nói, điều này chưa được hỗ trợ bây giờ (2016/11/01)

Điều đó có thể được xác minh bằng các bước sau được cung cấp bởi người hoài nghi.

  1. Đặt tạm dừng trong chương trình của bạn (ví dụ: một cuộc gọi Console.ReadKey).
  2. Gắn vào quá trình dotnet.exe chọn loại mã "Được quản lý (CoreCLR)" và "Gốc"
  3. Bạn sẽ nhận được một hộp thông báo nói rõ ràng rằng "Gỡ lỗi Interop không được hỗ trợ".

Not supported.

Đây là a proper way để gỡ lỗi dll bản địa.

  1. Nhấp chuột phải vào các giải pháp, Add hiện Dự án
  2. Open 'dotnet.exe'. Điều này thường được cài đặt vào 'C: \ Program Files \ dotnet \ dotnet.exe'.
  3. Bây giờ bạn sẽ thấy một nút khác trong trình thám hiểm giải pháp cho dotnet.exe.Nhấp chuột phải nó để đưa lên tính chất dự án:
  4. Thay đổi thư mục làm việc là những gì bạn muốn
  5. Thay đổi các đối số là đường dẫn đến dll xây dựng của bạn
  6. Thay đổi dự án exe để dự án khởi động của bạn

recomended: tới Tools-> Options-> Dự án và Giải pháp> xây dựng và Chạy, bỏ chọn 'Chỉ xây dựng các dự án khởi động và dependcies vào Run'

+1

Sử dụng MS Visual Studio 15.5.7 Tôi hiện có thể chuyển từ mã được quản lý (.NET core 2.0) sang mã gốc khi ứng dụng của tôi đang chạy trên Windows. Tôi thực sự muốn biết nếu điều này là (hoặc sẽ được) có thể cho một ứng dụng chạy trên Linux hoặc nếu đây là một nguyên nhân bị mất. – b8adamson

+0

Cảm ơn thông tin! Tôi sẽ cố gắng nếu gỡ lỗi từ xa trên linux hỗ trợ này khi tôi miễn phí. – zwcloud

+0

Tôi hiện đang xem hướng dẫn tại đây: https: //github.com/dotnet/coreclr/blob/master/Documentation/building/debugging-instructions.md để cố gắng tìm hiểu xem có thể thực hiện một số loại hỗn hợp không chế độ gỡ lỗi trên Linux. – b8adamson

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