Welcome to MSDN Blogs Sign in | Join | Help

Getting the name of current function

Useful snippet for debugging: A function that prints the name of the current function. To be accurate, it prints the name of the calling function.

In C# this is called "reflection".

In python, it is called "introspection".

C# example

// ----------------------------------------

using System;

namespace ConsoleApplication1
{
    public class ReflectionUtil
    {
        public static string get_current_method_name()
        {
            System.Diagnostics.StackFrame stackframe = 
                new System.Diagnostics.StackFrame(1, true);
            
            return stackframe.GetMethod().ReflectedType.Name 
                + "."
                + stackframe.GetMethod().Name ;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("Program.Main(): My name is: {0}", ReflectionUtil.get_current_method_name());
            System.Console.ReadLine();
        }
    }
}
// ----------------------------------------

Python Example:

# ----------------------------------------
# get name of the function
#
# The inspect module lets you examine the call stack.
# From that one can determine the name of the caller
# or the name of the current function
#

import inspect

def get_my_name() :
    return inspect.stack()[1][3]

def foo() :
    name = get_my_name()    
    print "foo(): My name is:" , name

class bar :

    def beer( self ) :
        name = get_my_name()    
        print "bar.beer(): My name is:" , name

foo()
b = bar()
b.beer()

#----------------------------------------

C++

This is the Visual Studio 2005 example ...

// -------------------------

#include "stdafx.h"

#include <iostream>

 

using namespace std;

 

void foo()

{

cout<< __FUNCTION__ << endl;

}

 

int _tmain(int argc, _TCHAR* argv[])

{

   foo();

   return 0;

}

// -------------------------------

 

I learned this by reading this article on DevX:

 

Saveen Reddy
2005-10-08 (updated on 2006-06-26)

Published Saturday, October 08, 2005 5:28 AM by saveenr

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
required 
(required) 
 
Page view tracker