feat(dispose): add detailed debug output with stack trace
Enhanced Dispose() in HashMapHelper, UnTypedArray, and UnsafeArray<T> to provide more informative debug messages when called on uninitialized or already disposed objects. When MHP_ENABLE_STACKTRACE is defined, the debug output now includes a stack trace with file, type, method, and line number details. Also incremented project version to 1.6.5.
This commit is contained in:
@@ -719,7 +719,23 @@ public unsafe struct HashMapHelper<TKey> : IDisposable
|
||||
{
|
||||
if (!IsCreated)
|
||||
{
|
||||
Debug.Fail("The UnsafeArray is not created or already disposed.");
|
||||
var message = "The HashMapHelper is not created or already disposed.";
|
||||
#if MHP_ENABLE_STACKTRACE
|
||||
var stackTrace = new StackTrace(1, true);
|
||||
var sb = new System.Text.StringBuilder();
|
||||
foreach (var frame in stackTrace.GetFrames())
|
||||
{
|
||||
var fileName = frame?.GetFileName();
|
||||
if (frame != null)
|
||||
{
|
||||
var methodInfo = DiagnosticMethodInfo.Create(frame);
|
||||
sb.AppendLine($"File: {fileName}, Type: {methodInfo?.DeclaringTypeName}, Method: {methodInfo?.Name}, Line: {frame.GetFileLineNumber()}");
|
||||
}
|
||||
}
|
||||
|
||||
message += Environment.NewLine + sb.ToString();
|
||||
#endif
|
||||
Debug.WriteLine(message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -273,7 +273,23 @@ public unsafe struct UnTypedArray : IUnTypedCollection
|
||||
{
|
||||
if (!IsCreated)
|
||||
{
|
||||
Debug.Fail("The UnsafeArray is not created or already disposed.");
|
||||
var message = "The UnTypedArray is not created or already disposed.";
|
||||
#if MHP_ENABLE_STACKTRACE
|
||||
var stackTrace = new StackTrace(1, true);
|
||||
var sb = new System.Text.StringBuilder();
|
||||
foreach (var frame in stackTrace.GetFrames())
|
||||
{
|
||||
var fileName = frame?.GetFileName();
|
||||
if (frame != null)
|
||||
{
|
||||
var methodInfo = DiagnosticMethodInfo.Create(frame);
|
||||
sb.AppendLine($"File: {fileName}, Type: {methodInfo?.DeclaringTypeName}, Method: {methodInfo?.Name}, Line: {frame.GetFileLineNumber()}");
|
||||
}
|
||||
}
|
||||
|
||||
message += Environment.NewLine + sb.ToString();
|
||||
#endif
|
||||
Debug.WriteLine(message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -418,7 +418,23 @@ public unsafe struct UnsafeArray<T> : IUnsafeCollection<T>
|
||||
{
|
||||
if (!IsCreated)
|
||||
{
|
||||
Debug.Fail("The UnsafeArray is not created or already disposed.");
|
||||
var message = "The UnsafeArray is not created or already disposed.";
|
||||
#if MHP_ENABLE_STACKTRACE
|
||||
var stackTrace = new StackTrace(1, true);
|
||||
var sb = new System.Text.StringBuilder();
|
||||
foreach (var frame in stackTrace.GetFrames())
|
||||
{
|
||||
var fileName = frame?.GetFileName();
|
||||
if (frame != null)
|
||||
{
|
||||
var methodInfo = DiagnosticMethodInfo.Create(frame);
|
||||
sb.AppendLine($"File: {fileName}, Type: {methodInfo?.DeclaringTypeName}, Method: {methodInfo?.Name}, Line: {frame.GetFileLineNumber()}");
|
||||
}
|
||||
}
|
||||
|
||||
message += Environment.NewLine + sb.ToString();
|
||||
#endif
|
||||
Debug.WriteLine(message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user