//author: stardicky //
//e-mail: stardicky@hotmail.com //
//qqnumber: 9531511 //
//companyname: ezone international //
//class: hbs-0308 //
//title: 如何在dotnet中进行栈的跟踪 //
////////////////////////////////////////////////////////////////////////////////
using system;
using system.diagnostics;
namespace stacktracedemo
{
/// <summary>
/// ezonedemo 的摘要说明。
/// </summary>
class ezonedemo
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[stathread]
static void main(string[] args)
{
//获得当前的栈的信息
ezonestacktrace.getcurrentstackinfomation();
console.writeline("********************************************************************************");
console.write("按任意键继续......");
console.read();
function1();
}
static void function1()
{
//在方法function1调用方法function1_2
function1_2();
}
static void function1_2()
{
//在方法function2中获得当前的栈的信息
ezonestacktrace.getcurrentstackinfomation();
console.writeline("********************************************************************************");
console.write("按任意键继续......");
console.read();
//在方法function1_2调用方法function3
function3();
}
static void function3()
{
//在方法function2中获得当前的栈的信息
ezonestacktrace.getcurrentstackinfomation();
console.writeline("********************************************************************************");
console.write("按任意键继续......");
console.read();
}
}
class ezonestacktrace
{
public static void getcurrentstackinfomation()
{
//用构造函数 "1","true" 是因为 "1" 表示屏蔽当前的栈;"true"表示是否生成扩展信息。
stacktrace mytrace=new stacktrace(1,true);
//来制造缩进的效果。
string space="";
for(int i=0;i<mytrace.framecount;i++)
{
console.writeline(system.environment.newline);
console.writeline(space+"栈名称:"+mytrace.getframe(i).getmethod());
console.writeline(space+"所在行:"+mytrace.getframe(i).getfilelinenumber());
//注意这里的列指的是该行的第几个字符,比如说一个制表(tab)字符就算一个字符。
console.writeline(space+"所在列:"+mytrace.getframe(i).getfilecolumnnumber());
space+=" ";
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
输出结果:
栈名称:void main(system.string[])
所在行:20
所在列:4
********************************************************************************
按任意键继续......
栈名称:void function1_2()
所在行:40
所在列:4
栈名称:void function1()
所在行:34
所在列:3
栈名称:void main(system.string[])
所在行:28
所在列:3
********************************************************************************
按任意键继续......
栈名称:void function3()
所在行:54
所在列:4
栈名称:void function1_2()
所在行:47
所在列:3
栈名称:void function1()
所在行:34
所在列:3
栈名称:void main(system.string[])
所在行:28
所在列:3
********************************************************************************
按任意键继续......
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




