Helpex - Trao đổi & giúp đỡ Đăng nhập
130

Chương trình C # (được tích hợp csc hello.cs) sau đây chỉ in Hello via Console!trên bàn điều khiển và Hello via OutputDebugStringtrong cửa sổ DebugView. Tuy nhiên, tôi không thể thấy một trong các System.Diagnostics.*cuộc gọi. Tại sao vậy?

using System;
using System.Runtime.InteropServices;
class Hello {
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main() {
        Console.Write( "Hello via Console!" );
        System.Diagnostics.Debug.Write( "Hello via Debug!" );
        System.Diagnostics.Trace.Write( "Hello via Trace!" );
        OutputDebugString( "Hello via OutputDebugString" );
    }
}

Có thể có một số chuyển đổi dòng lệnh đặc biệt cần thiết cho csc?

Tôi không sử dụng Visual Studio cho bất kỳ sự phát triển nào của mình, đây là công cụ dòng lệnh thuần túy.

130 hữu ích 1 bình luận 173k xem chia sẻ
70

Như những người khác đã chỉ ra, người nghe phải được đăng ký để đọc những luồng này. Cũng lưu ý rằng Debug.Writesẽ chỉ hoạt động nếu DEBUGcờ xây dựng được đặt, trong khi Trace.Writesẽ chỉ hoạt động nếu TRACEcờ xây dựng được đặt.

Việc đặt DEBUGvà / hoặc TRACEcờ được thực hiện dễ dàng trong các thuộc tính dự án trong Visual Studio hoặc bằng cách cung cấp các đối số sau cho csc.exe

/define:DEBUG;TRACE

70 hữu ích 3 bình luận chia sẻ
107

Trong khi gỡ lỗi System.Diagnostics.Debug.WriteLinesẽ hiển thị trong cửa sổ đầu ra ( Ctrl+ Alt+ O), bạn cũng có thể thêm a TraceListenervào Debug.Listenersbộ sưu tập để chỉ định Debug.WriteLinecác cuộc gọi đến đầu ra ở các vị trí khác.

Lưu ý: Debug.WriteLinecác cuộc gọi có thể không hiển thị trong cửa sổ đầu ra nếu bạn có tùy chọn Visual Studio "Chuyển hướng tất cả văn bản Cửa sổ đầu ra sang Cửa sổ ngay lập tức" được chọn trong menu Công cụTùy chọnGỡ lỗiChung . Để hiển thị " Công cụTùy chọnGỡ lỗi ", hãy chọn hộp bên cạnh " Công cụTùy chọnHiển thị tất cả cài đặt ".

107 hữu ích 1 bình luận chia sẻ
40

Bạn cần thêm một TraceListenerđể thấy chúng xuất hiện trên Bảng điều khiển.

TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);

Chúng cũng xuất hiện trong cửa sổ Visual Studio Output khi ở chế độ Gỡ lỗi.

40 hữu ích 4 bình luận chia sẻ
9

Trong khi bạn đang gỡ lỗi trong Visual Studio, hãy hiển thị cửa sổ "Đầu ra" (Xem-> Đầu ra). Nó sẽ hiển thị ở đó.

9 hữu ích 1 bình luận chia sẻ
5
5 hữu ích 1 bình luận chia sẻ
3

Khi tôi viết debug.write ("") trong mã, nó sẽ xuất ra trong "Cửa sổ ngay lập tức", chứ không phải "Cửa sổ đầu ra".

Bạn có thể thử nó. Để hiển thị cửa sổ "Ngay lập tức" ( Gỡ lỗiCửa sổNgay lập tức ).

3 hữu ích 0 bình luận chia sẻ
2

Giải pháp cho trường hợp của tôi là:

  1. Nhấp chuột phải vào cửa sổ đầu ra;
  2. Kiểm tra 'Đầu ra chương trình'
2 hữu ích 0 bình luận chia sẻ
0

Đối với VB.NET, áp dụng như sau. Bạn phải chọn "Gỡ lỗi" VÀ đảm bảo rằng bạn "Bắt đầu gỡ lỗi". Điều này có thể đạt được bằng cách nhấn F5.

Ngoài ra Console.WriteLine sẽ chỉ hiển thị các thông báo khi xây dựng dưới dạng "Phát hành" trong cửa sổ đầu ra của bạn.

Như đã đề cập trước đó, hãy mở cửa sổ đầu ra với Chế độ xemĐầu ra VÀ đảm bảo chọn "Xây dựng" nếu bạn muốn xem tin nhắn Console.WriteLine hoặc "Gỡ lỗi" nếu bạn muốn xem các tin nhắn Debug.WriteLine hoặc Trace.WriteLine.

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# debugging , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading