bất kỳ cách chung nào để theo dõi/ghi lại giá trị của tất cả các biến cục bộ khi ngoại lệ xảy ra trong một phương thức? (trong C# 3)Làm thế nào để theo dõi tất cả các biến cục bộ khi ngoại lệ xảy ra
Trả lời
Trả lời: Sử dụng PostSharp (Chính sách Injection), thuộc tính XTraceMethodBoundary, ghi đè OnException. này ghi lại tất cả các kiểu phương thức nhập và trả về các kiểu và giá trị tham số. Tôi đã sửa đổi PostSharp để thêm một phương thức đơn giản để ghi lại các tham số. không hoàn hảo nhưng đủ tốt
private static void TraceMethodArguments(MethodExecutionEventArgs eventArgs)
{
object[] parameters = eventArgs.GetReadOnlyArgumentArray();
if (parameters != null)
{
string paramValue = null;
foreach (object p in parameters)
{
Type _type = p.GetType();
if (_type == typeof(string) || _type == typeof(int) || _type == typeof(double) || _type == typeof(decimal))
{
paramValue = (string)p;
}
else if (_type == typeof(XmlDocument))
{
paramValue = ((XmlDocument)p).OuterXml;
}
else
{ //try to serialize
try
{
XmlSerializer _serializer = new XmlSerializer(p.GetType());
StringWriter _strWriter = new StringWriter();
_serializer.Serialize(_strWriter, p);
paramValue = _strWriter.ToString();
}
catch
{
paramValue = "Unable to Serialize Parameter";
}
}
Trace.TraceInformation("[" + Process.GetCurrentProcess().Id + "-" + Thread.CurrentThread.ManagedThreadId.ToString() + "]" + " Parameter: " + paramValue);
}
}
}
Bạn không thể, về cơ bản. Phản ánh cho phép bạn nhận được các biến số dụ (và tĩnh) nhưng nếu bạn muốn ghi nhật ký biến cục bộ, bạn sẽ phải thực hiện điều đó một cách rõ ràng. Có thể bạn có thể làm tốt hơn một chút bằng cách sử dụng API lược tả, nhưng đó sẽ là một bước cực kỳ khắc nghiệt.
Bạn có thể làm một kết xuất bộ nhớ của quá trình kể từ khi chụp cả đống và ngăn xếp, nhưng vì bạn đã gắn thẻ câu hỏi là đăng nhập, tôi cho rằng đó không phải là những gì bạn đang tìm kiếm.
Tuy nhiên, bạn có thể giảm nhu cầu thông tin này bằng cách đảm bảo các phương pháp của bạn luôn nhỏ và quan trọng. Điều đó sẽ mang lại nhiều dấu vết ngăn xếp hữu ích hơn và nó sẽ giới hạn số lượng người dân địa phương để kiểm tra.
Sử dụng MiniDumpWriteDump để tạo kết xuất bộ nhớ của quá trình tại thời điểm ngoại lệ. Bạn sẽ phải P/Gọi nó.
- 1. PHP: Làm thế nào để kết xuất tất cả các biến cục bộ trong một trình xử lý ngoại lệ
- 2. Điều gì cần ghi lại khi ngoại lệ xảy ra?
- 3. Làm thế nào để theo dõi các vấn đề serialization WCF/ngoại lệ
- 4. Làm cách nào để bạn chặn tất cả Ngoại lệ?
- 5. Giá trị của các biến cục bộ trong C# sau ngoại lệ?
- 6. Làm thế nào để giải cứu tất cả các ngoại lệ theo một không gian tên nhất định?
- 7. Điều gì sẽ xảy ra khi ném ngoại lệ C++?
- 8. Làm thế nào để đăng nhập tất cả các ngoại lệ trong gói Oracle?
- 9. Làm thế nào để xác định các biến tĩnh cục bộ luồng cục bộ?
- 10. Máy chủ SQL: Theo dõi lại ngoại lệ với số ngoại lệ ban đầu
- 11. Theo dõi ngăn xếp in và tiếp tục sau khi xảy ra lỗi trong R
- 12. Ngoại lệ Delphi không cho phép tôi xem các biến cục bộ
- 13. Làm thế nào tôi có thể bắt tất cả ngoại lệ trong ứng dụng iPhone
- 14. Bắt tất cả ngoại lệ trong Python
- 15. Python rất lớn. Làm thế nào để tránh ra khỏi ngoại lệ bộ nhớ?
- 16. Làm thế nào là phá hủy các biến cục bộ khi một khối được thoát thường được gọi trong C++?
- 17. Theo dõi các biến thể mã nguồn
- 18. làm thế nào để tập trung theo dõi các bộ đệm trong các emacs?
- 19. ném ngoại lệ mới trong khi giữ ngăn xếp theo dõi và thông tin ngoại lệ bên trong
- 20. Git - Tự động chuyển tiếp nhanh chóng tất cả các nhánh theo dõi khi kéo
- 21. git: Làm cách nào để ghi đè tất cả thay đổi cục bộ khi hợp nhất?
- 22. Một trình xử lý ngoại lệ cho tất cả các ngoại lệ của CLASS
- 23. PHP: cURL và theo dõi tất cả các chuyển hướng
- 24. Làm thế nào tôi có thể hiển thị tất cả các biến lưu trữ cục bộ lưu trữ?
- 25. Làm thế nào bạn có thể kiểm tra theo dõi chương trình theo dõi ngăn xếp của một ngoại lệ trong Python?
- 26. Những ngoại lệ nào có thể xảy ra khi lưu một XDocument?
- 27. Làm cách nào để khắc phục nguyên nhân của ngoại lệ Hibernate "IllegalArgumentException xảy ra khi đang gọi setter"?
- 28. Làm cách nào để biến tất cả các từ chối thành json tùy chỉnh trong phun?
- 29. Trong Java, làm cách nào để đặt loại trả về nếu ngoại lệ xảy ra?
- 30. một ngoại lệ unhandled win32 xảy ra trong w3wp.exe