平常在用偵錯時Exception中的StackTrace是我找出問題的一個大資訊,可以知道發生錯誤的地方,是從那一個方法中出錯,是那一個方法呼叫出錯的方法的,沒有這個資訊,將會非常難以除錯,後來在想難到只有Exception中才可以得到這資訊嗎?就用Reflector查看Exception得知原來Exception.StackTrace,其時是呼叫System.Diagnostices.StackTrace的ToString()方法取得資訊的,所以只要平時就算沒有Execption用System.Diagnostices.StackTrace也可以取知呼叫堆疊中的資訊。
建構式
公用屬性
公用方法
範例1 取得如Execption中的StackTrace資訊
範例2 取得如Execption中的StackTrace資訊,但有檔案資訊。
範例3 取得自己的資訊
後來在上Google搜才知道,原來有一堆關於System.Diagnostices.StackTrace的資訊,為什麼我以前沒看到..
建構式
名稱 | 說明 |
---|---|
StackTrace () | |
StackTrace (Boolean) | |
StackTrace (Exception) | |
StackTrace (Int32) | |
StackTrace (StackFrame) | |
StackTrace (Exception, Boolean) | |
StackTrace (Exception, Int32) | |
StackTrace (Int32, Boolean) | |
StackTrace (Thread, Boolean) | |
StackTrace (Exception, Int32, Boolean) |
公用屬性
名稱 | 說明 |
---|---|
FrameCount | 取得堆疊追蹤中的框架數。 |
公用方法
說明 | |
---|---|
多載。 判斷兩個 |
|
GetFrame | 取得指定的堆疊框架。 |
GetFrames | 傳回目前堆疊追蹤內的所有堆疊框架的複本。 |
做為特定型別的雜湊函式。 |
|
取得目前執行個體的 |
|
判斷指定的 Object 執行個體是否為相同的執行個體。 (繼承自 |
|
ToString | 覆寫。 建立堆疊追蹤的可讀取表示。 |
範例1 取得如Execption中的StackTrace資訊
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace();
Console.Write(st.ToString());
Console.Read();
// 輸出
// 於 StackTraceTest.Program.test()
// 於 StackTraceTest.Program.Main(String[] args)
}
}
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace();
Console.Write(st.ToString());
Console.Read();
// 輸出
// 於 StackTraceTest.Program.test()
// 於 StackTraceTest.Program.Main(String[] args)
}
}
範例2 取得如Execption中的StackTrace資訊,但有檔案資訊。
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace(true);
Console.Write(st.ToString());
Console.Read();
// 輸出
// 於 StackTraceTest.Program.test() 於 D:\XX\Program.cs: 行 17
// 於 StackTraceTest.Program.Main(String[] args) 於 D:\XX\Program.cs: 行 12
}
}
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace(true);
Console.Write(st.ToString());
Console.Read();
// 輸出
// 於 StackTraceTest.Program.test() 於 D:\XX\Program.cs: 行 17
// 於 StackTraceTest.Program.Main(String[] args) 於 D:\XX\Program.cs: 行 12
}
}
範例3 取得自己的資訊
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace(true);
Console.Write(st.GetFrame(0).ToString());
Console.Read();
}
}
{
static void Main(string[] args)
{
test();
}
static void test()
{
StackTrace st = new StackTrace(true);
Console.Write(st.GetFrame(0).ToString());
Console.Read();
}
}
後來在上Google搜才知道,原來有一堆關於System.Diagnostices.StackTrace的資訊,為什麼我以前沒看到..