[英]Visual Studio Method Call Flow Dump
我想在我的 .net 項目中從上到下列出方法調用順序。
using System;
public class Program
{
public static void Main()
{
One();
}
public static void One(){
Two();
}
public static void Two(){
Three();
}
public static void Three(){
Four();
}
public static void Four(){
Console.WriteLine("Hello World!");
}
}
在上面的示例 class 中,我需要獲取類似“Main()->One()->Two()->Three()->Four()”的日志
您可以使用System.Diagnostics.StackTrace
獲取當前 stackTrace 並使用它來記錄所需的:
根據您的代碼演示:
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
One();
}
public static void One(){
Two();
}
public static void Two(){
Three();
}
public static void Three(){
Four();
}
public static void Four(){
Console.WriteLine("Hello World!");
var stackTrace = new System.Diagnostics.StackTrace();
List<string> methods = new List<string>();
for (int i = stackTrace.FrameCount - 1; i >= 0; i--)
{
methods.Add($"{stackTrace.GetFrame(i).GetMethod().Name}()");
}
Console.WriteLine(string.Join("->", methods));
}
}
上面的代碼將 output 打印為
Main()->One()->Two()->Three()->Four()
檢查小提琴 - https://dotnetfiddle.net/Ee8ni8
有一個非理想的解決方案:
Main()->One()...
)。 正如 user1672994 所指出的,這可以通過System.Diagnostics.StackTrace
來完成。您還可以從 Visual Studio 中的Call Hiarchy window中發現調用流程,但它不會以請求的格式為您提供數據。 但是,它會獨立於您可能不完美的測試用例找到呼叫流程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.