How to Find who is calling me?


 
Thread Tools Search this Thread
Top Forums Programming How to Find who is calling me?
# 1  
Old 02-10-2005
Bug How to Find who is calling me?

Hi,

I was trying to find from the function which is called by some other function but is it possiable by the calling funcation that who is calling me? For example

int function1()
{
// do something
return 0 ;
}

char function2()
{
// do something
function1() ; // is function2 knows function2 is calling me?
return '' ;
}

int main()
{
function1() ; // is function1 knows I called by main?
return 0 ;
}

by doing this we can able to track the program but this facility is there when we use debugger or when we debug our code but how to do that programatically I am not sure unix has stack tracing facility.

any help regarding this?

Thanks in advance
Balasubramanian.
# 2  
Old 02-11-2005
Can you use strace ?

Code:
STRACE(1)                                               STRACE(1)

NAME
       strace - trace system calls and signals

SYNOPSIS
       strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...  [ -ofile ] [ -ppid
       ] ...  [ -sstrsize ] [ -uusername ] [ command [ arg ...  ] ]

       strace -c [ -eexpr ] ...  [ -Ooverhead ] [ -Ssortby ] [ command [ arg  ...
       ] ]

DESCRIPTION
       In the simplest case strace runs the specified command until it exits.  It
       intercepts and records the system calls which are called by a process  and
       the  signals  which  are  received  by a process.  The name of each system
       call, its arguments and its return value are printed on standard error  or
       to the file specified with the -o option.

       strace  is a useful diagnostic, instructional, and debugging tool.  System
       adminstrators, diagnosticians and trouble-shooters will find it invaluable
       for  solving  problems  with  programs for which the source is not readily
       available since they do not need to be recompiled in order to trace  them.
       Students,  hackers  and the overly-curious will find that a great deal can
       be learned about a system and its system calls by  tracing  even  ordinary
       programs.   And  programmers will find that since system calls and signals
       are events that happen at the user/kernel interface, a  close  examination
       of  this  boundary  is  very useful for bug isolation, sanity checking and
       attempting to capture race conditions.

... more available on man page

Or, did I misunderstand your question?
# 3  
Old 02-11-2005
OP wants to know if a function can do a stack crawl to find the address of the calling function - I do not know how.
# 4  
Old 02-11-2005
Thanks for your reply, I am not sure how to use strace? also I am not sure strace will give me the flow or sequence I am expecting from any program. I am looking for the function which is already available in Java called getStackTrace similarly if we have any things to do in C/C++ or any easy way to do that.


Thanks for your help,
Balasubramanian
# 5  
Old 02-11-2005
Quote:
Originally Posted by jim mcnamara
OP wants to know if a function can do a stack crawl to find the address of the calling function - I do not know how.
Does the OP mean the address of the CPU stack pointers? If so, I don't think this is available at the OS level. That is why, as I recall (it has been many years), there are "buffer overflows" and similar security issues, because the OS and application does not have direct visibility into the addresses of the CPU H/W stack.
# 6  
Old 02-11-2005
The OP doesn't want an address at all. Inside function1, he wants to do something and get either "function2" or "main" as the result, depending on which of those called him. This might mean obtaining the the returm address as an intermediate result and then scanning a symbol table, but the address is not the objective. This would only be doable if the program was compiled with symbolic debugging information included as for use with a symbolic debugger like gdb. I'm not going to try something that daunting for such a minor result.

If I really needed that, I would expand the argument list of the function1 module to contain a field called "caller". Then I use:
function1("main")
function1("function2")
as needed. function1 would refer to the first argument to find the caller.
# 7  
Old 02-11-2005
Is this way you don't think its kind of hard codeing? I am asking for the generic solution so that we can use for all of our programs without opening the file mens with out analysing the file we can know what are all the functions availabe and in what sequence its called like that. those functionality already available in Rational Rose when we reverse engineering the project it will generate sequence diagram those applications will read our project and generate it but we are developing the application like similar to that.

Thanks for your reply.
Balasubramanian.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calling specific characters from a find variable

I'm trying to do something like this: find . -name blablabla -exec ln -s ./"{:53:14} blablabla" \; The idea is find blablabla and create a symbolic link to it using part of it's path and then it's name, "blablabla." I just don't know if I can call characters out of a find variable. ... (16 Replies)
Discussion started by: scribling
16 Replies

2. Shell Programming and Scripting

find -exec How to add additional parameter when calling a funtion

Hello Current working script is : # # my_script BEGIN # function a_function { FIRST_PARAM="$1" DO_SOMETHING "$FIRST_PARAM" } export -f a_function START_HERE="/home/some_user/Documents" find $START_HERE" -exec bash -c 'a_function "$0" ' {} \; (5 Replies)
Discussion started by: jcdole
5 Replies

3. Shell Programming and Scripting

Calling a find/remove within a script

Greetings all, I am calling a remove from within a script that is used for a cleanup process.. It is not working as expected. Here is what I am doing. I have a config file that lists out a directory name, and the options to run Within the config file DIR1="find... (9 Replies)
Discussion started by: jeffs42885
9 Replies

4. Shell Programming and Scripting

How does calling it .sh help?

Hi. I have been running some scripts ok with no extension on the name, and they work fine. What difference does it make if I call them whatever.sh? And I have some scripts starting #!/bin/bash - which debian recognises as shell scritps, even without the .sh ending - and some which don't. I'm sure... (8 Replies)
Discussion started by: triplemaya
8 Replies

5. Homework & Coursework Questions

Shell script calling Perl function, sort and find data, write to new files

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I must write a shell script that calls two external Perl functions--one of which sorts the data in a file, and... (6 Replies)
Discussion started by: kowit010
6 Replies

6. Shell Programming and Scripting

calling a file

Hi, How to call a file in shell script? I need to execute a file in shell script whether its possibel if it please give some example please help me (4 Replies)
Discussion started by: thelakbe
4 Replies

7. Programming

calling Perl from C

Hi, I am trying to execute a perl script from c program. I tried using system command. system("perl test.pl filename") ; This perl program takes filename as input and prints a number to screen. I need to get that returned number in C program. system command is... (3 Replies)
Discussion started by: pkusumam
3 Replies

8. UNIX for Dummies Questions & Answers

Calling alias

I have created a shortcut for the file kill_process.sh as shown below. alias kill_process="sh /root/kill_process.sh" It is working as per my expectations. But I have 2 questions. 1) Is there any better way? 2) How do I check what does kill_process link to? (1 Reply)
Discussion started by: shantanuo
1 Replies

9. UNIX for Dummies Questions & Answers

vi calling template

Hello. I want to copy temp files when I make a new file by vi. For example, 09:32:52 ~/ $ mkdir test 09:33:03 ~/ $ cd test/ 09:33:09 ~/test/ $ ls 09:33:16 ~/test/ $ vi test.cpp 09:34:37 ~/test/ $ cat test.cpp #include <iostream> int main() { } 09:34:48 ~/test/ $ vi test.bash 09:35:19... (1 Reply)
Discussion started by: Euler04
1 Replies

10. Cybersecurity

i am trying to find out who is calling me

they are having an operator call my home line and also my cell number and they are typing and the operator tells me what they are typing on their computer. i nevere heard of this. it is new to me. it is free the operator said, they knew my name and also a friend of mine's name...the phone says the... (2 Replies)
Discussion started by: gail
2 Replies
Login or Register to Ask a Question