Get cruuent function name, file... (even in release build)

using System;
using System.Data;
using System.IO;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            DoWork("Hello");
            Console.WriteLine("Press Enter to Continue ...");
            Console.ReadLine();
        }

        static public void DoWork(string arg)
        {
            StackTrace trace = new StackTrace(0/*skip frames*/, true /*need file info*/);
            StackFrame frame = trace.GetFrame(0);

            Console.WriteLine("File name = {0} ", frame.GetFileName());
            Console.WriteLine("Line no = {0} ", frame.GetFileLineNumber());
            Console.WriteLine("Function name = {0}", frame.GetMethod());

/*
the following text comes from a online forum:

I have tried using this with some success, but it does not seem to work well
with using the Release version of code.

Also, we are considering using a code obfuscator, and this would also
prevent things like function name from being valid when obtaining it at run
time. I would prefer a compile time method if possible.

========================================================================
"StackTrace information will be most informative with Debug build
configurations. By default, Debug builds include debug symbols, while
Release builds do not. The debug symbols contain most of the file, method
name, line number, and column information used in constructing StackFrame
and StackTrace objects. StackTrace might not report as many method calls as
expected, due to code transformations that occur during optimization."

If you really want to still get full info in release builds (without
obfuscation), then go to Project/Properties select Configuration
Properties/Build and set the following:

1.Optimize Code false
2.Generate Debugging Information true

Per the obfuscation bit, the point of it is to deny folks the opportunity
to reverse-engineer your code. The ability to get a good stack trace from
obfuscated code would defeat the reasons for obfuscation

* */

            Console.WriteLine("input arg = " + arg);
        }
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值