Làm thế nào để bạn đặt điều kiện "IF DEBUG" trong chương trình aC# để, vào thời gian chạy, nó sẽ bỏ qua một bộ mã nếu bạn đang chạy trong chế độ Gỡ lỗi, nhưng thực thi một khối mã nếu chương trình không đang chạy trong chế độ gỡ lỗi? Một tình huống mà điều này có thể được sử dụng là nếu một dấu thời gian được thực hiện ở đầu của một khối và một dấu thời gian được thực hiện ở cuối. THey sẽ khó có sự khác biệt về thời gian chạy. Tuy nhiên, nếu bạn đang bước qua mã trong chế độ gỡ lỗi, chúng sẽ khác nhau rất nhiều và các điều kiện lỗi trong "nếu khối" có thể được khởi động dẫn đến việc thực hiện không đúng lúc (một số mã).Làm thế nào để bạn đặt một điều kiện "NẾU BỎ" trong một chương trình C#?
Trả lời
Bạn chỉ cần đặt mã của bạn trong một khối như thế này:
#IF DEBUG
//code goes here
#endif
Đây không phải là một điều thời gian chạy, đây là một chỉ thị tiền xử lý, có nghĩa là các mã trong khối đó sẽ thậm chí không được biên dịch và sẽ không được bao gồm.
Nếu bạn muốn kiểm tra trong thời gian chạy nếu bạn đang gỡ lỗi, bạn có thể kiểm tra Debugger.IsAttached
Sử dụng # nếu lệnh tiền xử lý:
#if debug
// run in debug mode
#else
// run if not in debug mode
#endif
không hoạt động khi xem OP ... do đó, tại thời điểm chạy ... – KevinDTimm
#if DEBUG
// something
#elif
// some other thing
#endif
không hoạt động, hãy xem OP ... sao cho, tại thời gian chạy ... – KevinDTimm
@KevinDTimm: Ah, đã bỏ lỡ điểm đó. Đừng bận tâm tôi, tôi chỉ đưa ra câu trả lời sai – simendsjo
Bạn cũng có thể sử dụng
[Conditional("Debug")]
thuộc tính trên phương pháp.
không hoạt động khi xem OP ... sao cho, tại thời điểm chạy ... – KevinDTimm
#if (DEBUG)
...
#else
...
#endif
thấy ở đây: http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
không hoạt động, hãy xem OP ... để tại thời điểm chạy ... – KevinDTimm
@KevinDTimm: Mặc dù người hỏi nói "thời gian chạy", tôi không hiểu tại sao kịch bản cụ thể của anh ta không thể bị xử lý bởi chỉ thị tiền xử lý. Có vẻ như anh ta muốn bỏ qua công cụ 'if (ItTookALongTime) 'khi chạy trong chế độ gỡ lỗi, vì trong chế độ gỡ lỗi, chúng ta mong đợi nó có thể mất nhiều thời gian ... vậy tại sao không đảm bảo' if (ItTookALongTime) ' bị loại trừ khi chúng tôi biên dịch để gỡ lỗi? –
bởi vì nó không phải là những gì ông yêu cầu :) ông muốn một cách để bật cờ cho mục đích gỡ lỗi, điều này có thể dễ dàng là một cách (trong tương lai) để bật ghi nhật ký (ví dụ). – KevinDTimm
Một vài chi tiết:
- Bạn có thể bọc toàn bộ một phương pháp hay chỉ là một khối mã hay chỉ là một dòng mã.
- Bạn cần phải thêm
using System.Diagnostics;
câu trả lời duy nhất giải quyết câu hỏi – KevinDTimm
Vì mỗi câu trả lời khác (nhưng một) không đề cập đến câu hỏi của bạn, hãy để tôi thử:
Nếu bạn muốn có một công tắc thời gian chạy, bạn sẽ cần một để lấy thông tin từ môi trường của bạn hoặc dòng lệnh. Ngoài ra, một khi bạn nhận được thông tin đó, bạn sẽ cần phải áp dụng nó vào chương trình của bạn.
1) Đối với điều này, bạn sẽ cần một biến toàn cục.
bool bDebug;
2) có được thông tin gỡ lỗi
bDebug = strcmp (getEnv ("DebuggingMode"), "1"); // you'll need to mess with this a little - do 'man getenv' and 'man strcmp' for an understanding of what I'm doing
- hoặc -
sử dụng các getopt()
chức năng để tìm hiểu xem gỡ lỗi bị tắt hoặc trên
3) mỗi đặt trong mã của bạn mà bạn muốn gỡ lỗi được bật, kiểm tra xem bDebug có được đặt
if (bDebug) {
// do something
}
- 1. Làm thế nào để bạn thực hiện một chương trình ngủ trong C + + trên Win 32?
- 2. Làm thế nào để bạn gọi một chương trình con từ một gói, được đặt tên gói trong Perl?
- 3. làm thế nào để bạn thêm một điều kiện để một biểu thức lambda
- 4. Làm thế nào để thực hiện một sự kiện hủy bỏ trong C#
- 5. Làm thế nào để bạn di chuyển theo chương trình của một TextArea Flex đến cùng?
- 6. Làm thế nào để loại bỏ một số liên lạc theo chương trình trong android
- 7. Làm thế nào để chạy chương trình bên ngoài thông qua một chương trình C#?
- 8. như thế nào shared_ptr làm việc trong điều kiện nếu
- 9. Làm thế nào để có điều kiện hành động nếu FINDSTR không tìm thấy một chuỗi
- 10. Làm thế nào để bạn sinh ra một tiến trình khác trong C?
- 11. Làm thế nào để bạn đặt một Func trong một thuộc tính C# (chú thích)?
- 12. Làm thế nào để bạn kiểm tra xem một biến được sử dụng trong một dự án theo chương trình?
- 13. Làm thế nào để bạn nhận được bao nhiêu bộ nhớ một chương trình sử dụng?
- 14. Làm thế nào để Daemonize một chương trình Java?
- 15. Nhúng Mono: Làm thế nào để bạn nâng cao một sự kiện trong C++?
- 16. Bạn tạo chương trình C++ tự do như thế nào?
- 17. Làm thế nào để bạn sử dụng core.logic một cách thiết thực trong một chương trình Clojure lớn hơn?
- 18. Làm thế nào để chạy một chương trình C đơn giản trong Eclipse IDE
- 19. Làm thế nào để thêm những thứ vào một chương trình menustrip theo chương trình?
- 20. Trong Bash, làm thế nào để bạn thấy nếu một chuỗi không nằm trong một mảng?
- 21. Làm thế nào để vá một chương trình Java?
- 22. Làm thế nào để khởi động lại Linux từ bên trong một chương trình C++?
- 23. Làm thế nào để bạn cài đặt một plugin Maven2?
- 24. Làm thế nào để ẩn/bỏ ẩn một tiến trình trong C#?
- 25. Làm thế nào để thoát gdb nếu chương trình thành công, ngắt nếu chương trình bị treo?
- 26. Làm thế nào để chạy chương trình C trên Ubuntu?
- 27. Làm thế nào để hoàn thành một Rx Observable tùy thuộc vào một điều kiện trong một sự kiện
- 28. Làm thế nào để thực hiện một chương trình python chạy dài, hướng sự kiện?
- 29. Làm thế nào để truy cập vào bộ nhớ từ một chương trình trong một
- 30. Làm thế nào để sử dụng Redis trong một chương trình C++?
+1 cho bit "thời gian chạy" – Earlz
Trên 'Trình gỡ lỗi.IsAttached', tôi tin rằng nó sẽ là đúng nếu bạn đang làm gỡ lỗi từ xa trên một trang web sản xuất. Có, tôi biết bạn thường không muốn làm điều này, nhưng trong một số trường hợp cạnh mà bạn chỉ không thể tìm ra những gì sai nó có thể giúp đỡ. Chỉ cần đảm bảo mã "gỡ lỗi" của bạn sẽ không gây ra sự cố trong môi trường sản xuất nếu bạn sử dụng gỡ lỗi từ xa. –
+1 @Nelson: Gỡ lỗi từ xa (đính kèm trình gỡ lỗi) là cách duy nhất để gỡ lỗi dịch vụ windows. –